0分求调

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

tyt_ @ 2024-10-24 18:33:22

求调

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

by ccch1ennn @ 2024-10-24 18:37:55

return 0包在if(a[i]==1)里面


by tyt_ @ 2024-10-24 18:40:14

@ccch1ennn 还是不行啊


by Ybll_ @ 2024-10-24 18:50:11

@tyt_ 第一个出现一次的字母

#include<bits/stdc++.h>
using namespace std;
int a[30];
int main() {
    string n;
    cin>>n;
    int lenn=n.size();
    for(int i=0; i<lenn; i++) {
        a[n[i]-'a']++;
    }
    for(int i=0; i<lenn; i++) {
        if(a[n[i]-'a']==1) {
            cout<<n[i];
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

by lixiangthinker @ 2024-10-24 18:50:57

把第9行改成a[n[i]-'a'+1];,12行的输出改成cout << char(i+'a');,再加上楼上的就行了


by ccch1ennn @ 2024-10-24 18:51:37

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

1.遍历字符串时,字符是从0开始一直到lenn-1的 2.顺序是原字符串的顺序,不是字典序


by tyt_ @ 2024-11-04 18:53:17

@Ybll_ 谢谢


by tyt_ @ 2024-11-04 18:53:47

@ccch1ennn 谢谢大佬,我懂了


|