c++80分求救!!!

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

fupincheng @ 2023-06-19 19:08:32

#include<bits/stdc++.h>
#define ll long long
#define maxn 1000009
#define minn -100009
using namespace std;
string s;
int l[129];
int main(void) {
    cin>>s;
    for(int i=0;i<s.length();i++){
        l[int(s[i])]++;
    }
    for(int i=0;i<129;i++){
        if(l[i]==1){
            cout<<char(i);
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

测试点链接


by WinsreWu @ 2023-06-19 19:18:37

第二个循环的问题, 第一个指的是在字符串里面的位置
(我真不知道你为什么还能拿80, 这数据出的好神奇


by _zhx @ 2023-06-19 19:32:41

@fupincheng

#include<bits/stdc++.h>
#define ll long long
#define maxn 1000009
#define minn -100009
using namespace std;
string s;
int l[129];
int main(void) {
    cin>>s;
    for(int i=0;i<s.length();i++){
        l[int(s[i])]++;//改成l[s[i]-'a']++;
    }
    for(int i=0;i<129;i++){
        if(l[i]==1){
            cout<<char(i);//改成cout<<s[i];
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

by 沉石鱼惊旋 @ 2023-06-19 19:54:39

@fupincheng 按你的码风改的。

#include<bits/stdc++.h>
#define ll long long
#define maxn 1000009
#define minn -100009
using namespace std;
string s;
int l[129];
int main(void) {
    cin>>s;
    for(int i=0;i<s.length();i++){
        l[int(s[i])]++;
    }
    for(int i=0;i<s.length();i++){
        if(l[int(s[i])]==1){
            cout<<char(s[i]);
            return 0;
        }
    }
    cout<<"no";
    return 0;
}

by 沉石鱼惊旋 @ 2023-06-19 19:55:37

@zhaohongxu 别自己没拿这份代码过还瞎改代码误导别人。错误很明显,提交实测确实只有 80pts。


by _zhx @ 2023-06-19 20:01:48

@YXJS 红名大佬,对不起,我这个小拉拉打错了,这个是我自己的

#include<bits/stdc++.h>
using namespace std;
int a[26];
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;
        }
    }
    cout<<"no";
    return 0;
}

|