80分,救救孩子吧!

B2110 找第一个只出现一次的字符

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啦,谢谢各位大老=佬


|