C语言实现去除字符串中重复的字符
程序:
#include<stdio.h>
#include<string.h>
void handle(char *p);
int main(void){
char p[100];
scanf("%s",p);
del(p);
printf("%s\n",p);
}
//方法1:找到重复的字符后将其后面的字符全部向前移一位,删除该重复的字符
void del(char *p){
int len=strlen(p);
for(int i=1;i<len;i++)
for(int j=0;j<i;j++)
if(p[i]==p[j]){
for(int k=i;k<len;k++)
p[k]=p[k+1];
len--; //提高代码执行效率,降低时间复杂度
i--; //不加这一句的话,会跳着比较查找,漏掉一些字符
}
}
//方法2:让每一个字符i和它后面的字符j比较,如果不一样就保存字符j
void del_1(char *p){
int len=strlen(p);
for(int i=0;i<len;i++){
int k=i+1;
for(int j=i+1;j<len;j++){
if(p[j]!=p[i])
p[k++]=p[j];
}
p[k]='\0'; //添加字符串结束标志
}
}```