救救我

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

18861010618Z @ 2023-07-26 18:19:15

#include<bits/stdc++.h>
using namespace std;
int a[1111],t=0,k=1;
string s;
int main() {
    getline(cin,s);
    for(int i=0; i<=s.size(); i++) {
        a[s[i]]++;
        t++;
    }
    for(int i=0; i<=t; i++){
        if(a[s[i]]==1) {
            cout<<s[i]<<endl;
            int k=2;
            break;
        }
    }   
    if(k==1)cout<<"no";
    return 0;
}

输出不了No


by wrkwrkwrk @ 2023-07-26 18:20:36

@18861010618Z 不应该是

a[s[i]]==2

吗?


by 18861010618Z @ 2023-07-26 18:24:02

@wrkwrkwrk 还是不对


by wrkwrkwrk @ 2023-07-26 18:25:29

@18861010618Z 不好意思看错题了


by wrkwrkwrk @ 2023-07-26 18:26:38

@18861010618Z 我再次运行了你的程序,当输入为两个a的时候输出no,不知道你什么数据被hack掉了


by 18861010618Z @ 2023-07-26 18:27:34

@wrkwrkwrk 没事,再帮我看看呗。


by tyy6034 @ 2023-07-26 18:27:41

输入时直接cin就行了,不用getline

枚举i时应该i<s.size()

用不着k直接return 0结束程序

找不到只出现一次的直接输出no,不用判断

#include<bits/stdc++.h>
using namespace std;
int a[1111],k=1;
string s;
int main() {
    cin>>s;
    for(int i=0; i<s.size(); i++)
        a[s[i]]++;
    for(int i=0; i<s.size(); i++){
        if(a[s[i]]==1) {
            cout<<s[i]<<endl;
            return 0;
        }
    }   
    cout<<"no"<<endl;
    return 0;
}

by 18861010618Z @ 2023-07-26 18:29:31

@wrkwrkwrk 大佬求解。


by 18861010618Z @ 2023-07-26 18:35:18

@tyy6034 感激不尽,全AC了;


by zhongboxuan123 @ 2023-07-26 18:36:06

@18861010618Z 有个问题,你要搞清楚字符串的下标是从0到size-1,你的t没啥必要,可以直接取s.size(),这样就能过了


#include<bits/stdc++.h>
using namespace std;
int a[1111];
string s;
int main() {
    cin >> s;
    for(int i=0; i<s.size(); i++) {
        a[s[i]]++;
    }
    bool flag = 0;
    for(int i=0; i < s.size(); i++){
        if(a[s[i]]==1) {
            cout<<s[i]<<endl;
            flag = 1;
            break;
        }
    }   
    if(!flag) cout<<"no";
    return 0;
}

by 18861010618Z @ 2023-07-26 18:36:47

@wrkwrkwrk 十分感谢 题已解


| 下一页