XXY2022 @ 2022-12-07 17:56:14
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
int b[30]={0};
cin>>a;
char d;
for(int i=0;i<a.length();i++)
{
int c=a[i]-'a';
b[c]++;
}
for(int i=0;i<a.length();i++)
{
if(b[i]==1)
{
d=i+'a';
cout<<d;
return 0;
}
}
}
by XXY2022 @ 2022-12-07 17:57:23
额少了个no
by XXY2022 @ 2022-12-07 17:58:09
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
int b[30]={0};
cin>>a;
char d;
for(int i=0;i<a.length();i++)
{
int c=a[i]-'a';
b[c]++;
}
for(int i=0;i<a.length();i++)
{
if(b[i]==1)
{
d=i+'a';
cout<<d;
return 0;
}
}
cout<<"no";
return 0;
}
by ImposterAnYu @ 2022-12-07 18:08:19
@XXY2022 你这找的是字典序最小的只出现一次的字母啊,不是第一个只出现一次的字符
by cn_ryh @ 2022-12-07 18:09:57
应该是这样的,第二次循环i
表示的是字符串a
中字符的位置下标。
所以该处字符为a[i]
,按照你上面的代码,在b
数组中对于下标a[i]-'a'
。
#include <iostream>
#include <string>
using namespace std;
int main() {
string a;
int b[30] = {0};
cin >> a;
for (int i = 0; i < a.length(); i++) {
int c = a[i] - 'a';
b[c]++;
}
for (int i = 0; i < a.length(); i++) {
if (b[a[i] - 'a'] == 1) {
cout << a[i];
return 0;
}
}
cout << "no";
return 0;
}
by cn_ryh @ 2022-12-07 18:11:16
@owo_ImposterAnYu_owo 不,他只是写乱了,按你说的那他第二个循环改写i<26
by kevinchw @ 2022-12-07 18:13:17
#include<iostream>
#include<string>
using namespace std;
int b[30]={0};
int main()
{
string a;
cin>>a;
char d;
for(int i=0;i<a.length();i++)
{
int c=a[i]-'a';
b[c]++;
}
for(int i=0;i<a.length();i++)
{
int num=a[i]-'a';
if(b[num]==1)
{
cout<<a[i];
return 0;
}
}
cout<<"no";
return 0;
}
自己看看改了啥吧,自己要先理解怎么写再去敲代码,你这代码让我感觉连自己的思路都不完全理解就开始敲代码了。
by ImposterAnYu @ 2022-12-07 18:35:56
@ryh2007316 哦,第二个循环没细看,我的问题