80分求调

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

EternityForMe @ 2024-08-24 10:36:17

我真的做不懂呀??

#include<bits/stdc++.h>
using namespace std;
long long b[1001];
int main(){
    ios::sync_with_stdio(NULL);
    cin.tie(0);
    cout.tie(0);
    string a;
    cin>>a;
    for(long long i=0;i<a.size();i++){
        b[a[i]]++;
    }
    for(long long i='a';i<='z';i++){
        if(b[i]==1){
            cout<<char(i)
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

by hhztl @ 2024-08-24 10:37:37

@EternityForMe 第一个


by hhztl @ 2024-08-24 10:39:28

@EternityForMe 这个“第一个”不是指在字母表里的顺序,而是在字符串中出现的次序


by Scez @ 2024-08-24 10:40:20

@EternityForMe 你cout的分号呢)


by Scez @ 2024-08-24 10:41:18

@EternityForMe 应该把字符串从头往后遍历一遍,看那个字符的出现次数


by study_Zzz @ 2024-08-24 10:51:32

#include <bits/stdc++.h>
using namespace std;
char s[100000+10];
int a[100000+10];
int main(){
    cin.getline(s, 100000);
    for(int i=0; i<strlen(s); ++i){
        int v=s[i];
        a[v]++;
    }
    for(int i=0; i<strlen(s); ++i){
        if(a[s[i]]==1){
            cout << s[i];
            return 0;
        }
    }
    cout << "no";
    return 0;
}

by study_Zzz @ 2024-08-24 10:53:53

楼上说的对,遍历整个字符串


by study_Zzz @ 2024-08-24 10:55:08

还有就是你的桶数组用的不对


by study_Zzz @ 2024-08-24 10:55:39

@ EternityForMe


|