我正在编写一个代码来删除字符串中重复出现的字符。
描述:-从字符串中删除重复的字符
示例:-
示例输入=abcdeabd
示例输出=abcde
我已经编写了代码,它正在工作,当我通过运行示例测试用例进行测试时,它通过了大多数测试用例,但有些测试用例失败了,例如,当我将输入字符串用作“yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi yi
这是我的密码
#include<stdio.h>
int main(void)
{
char a[60]="abcdeabd";
int n=0;
for(int l=0;a[l]!='\0';++l)
++n;
printf("%d\n",--n);
for(int i=0;i<=n;++i)
{
for(int j=i+1;j<=n;++j)
{
if(a[i]==a[j])
{
for(int k=j;k<=n;++k)
a[k]=a[k+1];
--n;
}
}
}
puts(a);
return 0;
}
请告诉我这个密码哪里出错了。。。?
最佳答案
逻辑错误在块中
if(a[i]==a[j])
{
for(int k=j;k<=n;++k)
a[k]=a[k+1];
--n;
}
如果一个角色连续出现两次以上,就不起作用。它不适用于“addd”或“adddbc”。
将其更改为
while
循环以解决问题。 while (a[i] == a[j])
{
for(int k=j;k<=n;++k)
a[k]=a[k+1];
--n;
}