用c++语言编写一个程序:如何在字符串里查找第一个不重复的字母,即只出现一次的最靠前的字母。例如:

2024-11-26 08:11:15
推荐回答(3个)
回答1:

有一个奇怪的问题,等会写程序

采用函数的形式完成查找,编译效果和代码,满意请采纳:

#include
#include
using namespace std;

void find(string a)
{
int a1[100]={0};

for(int i=0;i     a1[a[i]-65]++;   
    
for(int i=0;i    {
    if(a1[a[i]-65]==1)
    {
       cout<< a << " 第一个不重复的字母: "<< a[i] << endl;   
break;   
   }
    }


int main()
{
//addbccadfeg字符串则输出b;
//addbccabfeg字符串则输出f;
string a="addbccadfeg";
string b="addbccabfeg";

find(a);
find(b);

system("pause");
return 0;
}

回答2:

#include 
using namespace std;
void  f(char* s)
{
 int cnt,i,l;
 char* s1;
 l=strlen(s);
 for(i=0;i {
  s1=s;
  cnt=0;
  while(*s1)
  {
   if(*s1==s[i])
   {
    cnt++;
    if (cnt>1)
     break;
   }
   s1++;
  }
  if(cnt==1)
  {
     cout<     return;
  }
 }
 cout<}
int main()
{
 f("addbccadfeg");
 f("addbccabfeg");
 f("aabbccdd");
 return 0;
}

运行结果:

addbccadfeg: b
addbccabfeg: f
aabbccdd: 没找到
请按任意键继续. . .

回答3:

#include
#include
#pragma argsused
char strnchr(char *str)
{
char *p1,*p2;
p1=str;p2=p1+1;
while(*p2)
{
if(strchr(p2,*p1))
{
p1++;
p2++;
}
else return *p1;
}
return (char)0;
}
int main()
{
char *s1="addbccadfeg";
char *s2="addbccabfeg";
char c;
if(c=strnchr(s1))cout< if(c=strnchr(s2))cout< system("pause");
return 0;
}