1130:找第一个只出现一次的字符
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 62333 通过数: 23786
【题目描述】
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
【输入】
一个字符串,长度小于100000。
【输出】
输出第一个仅出现一次的字符,若没有则输出no。
代码如下:
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 char a[100001],b[26]; 5 int main() 6 { 7 cin>>a; 8 long len=strlen(a); 9 for(int i=0;i<len;i++) 10 b[a[i]-'a']++; 11 for(int i=0;i<len;i++) 12 if(b[a[i]-'a']==1) 13 { 14 cout<<a[i]; 15 return 0; 16 } 17 cout<<"no"<<endl; 18 return 0; 19 }
这道题的思路就是:
我先开两个数组,一个是装输入的字符的a【】,另一个b【】用于判断:
首先将a【i】视为ASKMA值,那么每种字母就有属于自己的编号;用一个for循环,如果编号相同b【a【i】】++;最后用for循环检查是否有只出现过一次的(即b【a【i】】==1),有的话直接输出并:终止流程(即return 0,很关键),否则就输出“no”;就行啦!