解题思路:用一个数组标记字母出现的先后,然后以先后顺序判断该字母是否符合条件输出就好了
注意事项: 我看到有些题解的第一个且只出现一次的字母的这个“第一个”是根据字母表的顺序输出的并不是根据输入的数据的顺序;
例: 输入: aadcbb
输出: c
这样居然也给判是对的,不知道是不是我对题目的理解错了,不过我这段代码也没判错。
参考代码:
#include<iostream> using namespace std; int main() { int a[130]={0};//定义大一点方便理解 int flag[30]={0},t=0;//用来记录字母出现的先后 string s1; cin>>s1; for(int i=0;i<s1.size();i++) //遍历字符串每个字母 { if(a[s1[i]]==0) {flag[t]=s1[i];t++;a[s1[i]]++;} //判断该字母是否第一次出现并记录 else a[s1[i]]++; } for(int i=0;i<t;i++) //从第一个出现的字母开始遍历 { if(a[flag[i]]==1){cout<<char(flag[i]); return 0;} //有符合条件的字母就输出并退出程序 } cout<<"no"; //如果没有出现过就输出no return 0; }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:613 |
WU-陶陶摘苹果2 (C++代码)浏览:1016 |
有关字符,字符串的输入输出函数说明浏览:498 |
C二级辅导-等差数列 (C语言代码)浏览:890 |
最好的,浏览:601 |
小O的数字 (C++代码)浏览:806 |
1169题解浏览:574 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)数组思路浏览:640 |
1273题解浏览:526 |
奖学金 (C语言代码)浏览:2102 |