【发布时间】:2015-03-16 05:35:24
【问题描述】:
我正在编写一个代码来删除字符串中重复出现的字符。
说明:- 去除字符串中的重复字符
示例:-
示例输入 = abcdeabd
样本输出 =abcde
我已经编写了代码并且它正在工作,当我通过运行示例测试用例进行测试时,它通过了大部分测试用例,但没有通过一些测试用例,例如当我将输入字符串用作“abcdabcdabcdabcd”时,它给了我 abcdd 作为输出而不是“abcd”
这是我的代码
#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;
}
请告诉我这段代码哪里出了问题...?
【问题讨论】:
-
你不能对你拥有的东西进行排序以避免两个 for 循环吗?
-
你到底要我做什么?
-
如果不阅读代码,我猜你没有删除重复的最后一个字符。
-
是的,这正是正在发生的事情:/
-
reducing the size of the source array itself...好吧,至少按照目前的代码,你不是。它的大小总是等于 60chars。