ybt1130:找第一个只出现一次的字符

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”;就行啦!

 

posted @ 2022-02-20 10:38  你的小垃圾  阅读(281)  评论(0编辑  收藏  举报