20110915_260 @ 2024-02-21 12:30:21
#include<iostream>
#include<cstring>
using namespace std;
string str;
int n,sum;
int a[125];
int main(){
cin>>str;
int len=str.size();
for(int i=0;i<len;i++)
a[int(str[i])]++;
for(int i='a';i<='z';i++){
if(a[i]==1){
cout<<char(i);
return 0;
}
}
printf("no");
return 0;
}
by _____QWQ_____ @ 2024-02-21 12:40:05
#include <iostream>
using namespace std;
int a[50];
int main()
{
string s;
cin>>s;
for(int i=0;i<s.size();i++)
a[s[i]-'a']++;
for(int i=0;i<s.size();i++)
{
if(a[s[i]-'a']==1)
{
cout<<s[i];
return 0;
}
}
printf("no");
return 0;
}
这样会好点,如果按照ascll存字母数量太大而且不好遍历 @20110915_260
by _XiaY_ @ 2024-02-21 12:43:22
@20110915_260 题目中要求的是“第一个只出现一次的字符”,而不是字典序最小的字符:
#include<iostream>
#include<cstring>
using namespace std;
string str;
int n,sum;
int a[125];
int main(){
cin>>str;
int len=str.size();
for(int i=0;i<len;i++)
a[int(str[i])]++;
for(int i=0;i<len;i++){ //修改了这个循环
if(a[str[i]]==1){
cout<<str[i];
return 0;
}
}
printf("no");
return 0;
}
这样就过了
by 20110915_260 @ 2024-02-21 13:03:50
@XiaY @QWQ AC啦,谢谢各位大老=佬