解题思路:用一个数组标记字母出现的先后,然后以先后顺序判断该字母是否符合条件输出就好了

注意事项: 我看到有些题解的第一个且只出现一次的字母的这个“第一个”是根据字母表的顺序输出的并不是根据输入的数据的顺序;

例:    输入:  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.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论