标签:分析 字符串去重 相等 can dde 删除 str 字符 scanf
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‘; //最后留出的空位置\0 len -= 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‘; //最后留出的空位置\0 len -= 1; i -= 1; //第i的位置值已经替换,外while需要再次从i的位置循环 break; //终止本次while循环比较 } j += 1; } i += 1; } printf("%s",a); }
标签:分析 字符串去重 相等 can dde 删除 str 字符 scanf
原文地址:https://www.cnblogs.com/thoughtful-actors/p/9494967.html