描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入一个字符串,长度小于100000。输出输出第一个仅出现一次的字符,若没有则输出no。样例输入
abcabd
样例输出
c自己做不出,但得到了两个别人的答案;
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char a[100100]; 6 int main(){ 7 int i,j,k=0,l=0; 8 gets(a); 9 l=strlen(a); 10 for(i=0;i<l;i++) 11 { 12 for(j=0;j<l;j++) 13 if(a[i]==a[j]&&i!=j) 14 k=1; 15 if(k==0) {cout<<a[i]; return 0; 16 } 17 k=0; 18 } 19 cout<<"no"; 20 }
上面这个更看得懂!
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int main() 6 { 7 char s[110000],b; 8 int a[27]={0},k,q=0; 9 gets(s); 10 int w=strlen(s); 11 for(int i=0;i<=w-1;++i) 12 {k=s[i]-96; 13 a[k]+=1;} 14 for(int i=0;i<=w-1;++i) 15 {k=s[i]-96; 16 if(a[k]==1) 17 {b=96+k;q=1;cout<<b;break;}} 18 if(q==0) cout<<"no"; 19 return 0; 20 }
这个就看不懂了!最后是我自己的,到现在也没知道是哪错了!
1 #include<stdio.h> 2 #include<string.h> 3 int t,i,j,flag,len; 4 char a[200000]; 5 int main() 6 { 7 8 gets(a); 9 len=strlen(a); 10 for(i=0;i<len-1;i++) 11 { 12 flag=1; 13 if(a[i]==‘@‘) continue; //对于相同的,省略; 14 for(j=i+1;j<len;j++) //j=j+1;可以不用循环i之前的字母。 15 if(a[i]==a[j]) 16 { 17 a[j]=‘@‘; //相同字母做标记。 18 flag=0; //不输出a[i]; 19 } 20 if(flag==1) 21 { 22 putchar(a[i]); 23 break; 24 } 25 } 26 if(i==len-1)printf("no"); 27 return 0; 28 }
时间: 2024-10-17 05:57:18