1、用C语言写
方法一:
分析:给一个十个字符的字符串aabbccddee。第一个字符依次跟后面的字符比较,如果有相等的就删除。然后再从第二个字符开始,用第二个字符依次跟后面的比较,如果有相等的就删除。依次类推,需要循环总字符长度-1次。删除用后位前移处理,最后空出的一位就置\0。当遇到有相等的字符,就从相等的那个字符位置开始做后位前移操作。
关键:这个主要思路就是从左开始指定字符,依次与后面的比较,实现后面无相同的字符。
代码如下:
#include "stdio.h" #include "string.h" void main() {char a[100];int i,len,k,j;printf("请输入字符串:");scanf("%s",a);i = 0;len = strlen(a);while(i<len-1){j = i+1;while(j<len) //第i个位置的值依次跟后面的值比较 {if (a[i] == a[j]) //如果相等,从第j的位置开始后位前移 {k = j;while(k<len-1){a[k] = a[k+1]; //执行后位前移k += 1;}a[len-1] ='\0'; //最后留出的空位置\0len -= 1;j -= 1; //由于第j的位置出现新值,内while需要重新从j开始比较 }j += 1;}i += 1;}printf("%s",a); }
方法二:
分析:把要去重的字符串分成两部分,一部分是没有重复的,另一部分是有重复的,先确定第一个字符是未重复部分,然后把第二个字符与第一个比较,相同就执行后位前移操作,如果不同,就把第二个字符也放进未重复部分,然后再第三个字符跟未重复部分进行比较,重复同样的操作,最后实现所有字符串的比较。
关键:这个思路主要是先把第一个看成是未重复的一部分,然后用后面的依次跟前面的比较,不相同就放到没有重复的部分,保证比完的都是没有重复的字符,然后拿还没有比的字符依次跟未重复部分比较。
代码如下:
#include "stdio.h" #include "string.h" void main() {char a[100];int i,len,k,j;printf("请输入字符串:");scanf("%s",a);i = 1;len = strlen(a);while(i<len){j = 0; while(j<i) //第i个位置的值依次跟前面的比较 {if (a[j] == a[i]) //如果相等,从第i个位置开始后位前移 {k = i;while(k<len-1){a[k] = a[k+1]; //执行后位前移k += 1;}a[len-1] = '\0'; //最后留出的空位置\0len -= 1;i -= 1; //第i的位置值已经替换,外while需要再次从i的位置循环break; //终止本次while循环比较 }j += 1;}i += 1;}printf("%s",a); }