删除重复字符并输出
今日看了这样一个题:请设计一个程序,输入字符串后,删除重复字符并输出,老是出bug,找了半天,发现一个细节极其重要。
算法思路:主要是删除元素,每个元素左移一位。
#include <stdio.h>
#include <string.h>
void delete(char *b,int n);//函数原型
int main(void)
{
char a[100];
int i, j, k;
scanf("%s",a); //长度为strlen(a)
for(i=0; i<strlen(a); i++)
{
for(j=i+1; j<strlen(a); j++)
{
if(a[j] == a[i])
{
delete(a,j);//若存在相同元素则进行删除。
j--; //注意删除一个元素后将j减回到原来位置,否则若有几个相邻重复元素会出bug!
}
}
}
printf("%s\n", a);
return 0;
}
void delete(char *b,int n)
{
for(int i=n; i<strlen(b); i++)
{
b[i]=b[i+1];//每个元素左移一位。
}
}