linzz


私信TA

用户名:uq_72686195822

访问量:84

签 名:

等  级
排  名 3722
经  验 1852
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

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

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

例:    输入:  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 人评分

  评论区

  • «
  • »