给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出
"no"
。
输入格式
一个字符串,长度小于 100000。
输出格式
输出第一个仅出现一次的字符,若没有则输出
"no"
。
样例输入
abcabd
样例输出
c
首先我们先定义一个data[100000],这么大的数组足以保存字符串。
然后我们定义一个zm[26],这个数组用来保存26个字母。(当然为了好懂可以定义zm[27],不考虑zm[0]就行)
定义一个cs[26],这个数组用来保存26个字母,每个字母出现的次数。
我们先遍历一遍这个数组,把cs数组的元素给弄出来。
#include <stdio.h>
#include <string.h>
int cs[26];
int flag=0;
char data[100000];
char zm[26];
int main()
{
for(int i=0;i<26;i++)
{
zm[i]='a'+i; //26个字母
}
gets(data);
int length=strlen(data);
for(int i=0;i<length;i++)
{
for(int j=0;j<26;j++)
{
if(data[i]==zm[j])
{
cs[j]=cs[j]+1; //对应的字母加1
}
}
}
for(int i=0;i<length;i++)
{
if(cs[(int)data[i]-97]==1) //看看这个字母是不是只出现一次
{
flag=1;
printf("%c\n",data[i]);
break;
}
}
if(flag==0)
{
printf("no\n");
}
return 0;
}
版权声明:本文为m0_52708559原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。