9.3 删除重复字符
本文已被浏览3735次
题目:输入一串字符,其中包含若干个重复的字符,编写程序 删除重复字符 .
算法解析:依次挑出第一个字符,依次和之间保留的字符进行比较,如果之前存在相同的字符,则跳过当前字符,否则需要将当前字符保存在最后面,之后再输出保留的字符.
算法描述:
Step 0:Input
Setp 1:取出数据源第i个字符为Ch
Step 2:取出保留字符第j个和Ch比较是否相同
Step 3:如果相同:i++回到Setp1
如果不同:j++回到Setp2
Step 4:当j和Ch保留字符长度相同时,表示保留字符中不存在和Ch相同的字符此时将Ch放在保留字符的第j位
Step 5:当所有的数据源字符比较完成后,Output
/**********版权声明**************
本博客展出的代码均为Jerry原创,转载请注明
严禁使用本博客的内容代替作业,算法可以借鉴
但不要连变量名都不改的就抄走!
*******************************/
#include <stdio.h>
#include <stdlib.h>
int main(){
//定义变量
char Raw[100]={0},Cut[100]={0};
int Raw_L=0,Cut_L=0,i,j,Re;
//Input
scanf("%s",&Raw);
//统计Raw长度
for(Raw_L=0;Raw[Raw_L]!=0;Raw_L++);
/*开一个循环
分别取出Raw的字符*/
for(i=0;i<Raw_L;i++){
//标记变量,如果重复为1,不重复为0
Re=0;
//开一个循环,依次比对保留字符和取出的字符
for(j=0;j<Cut_L;j++){
//判断是否相同
if(Cut[j]==Raw[i]){
//如果相同,那么标记变量改变,后边的字符就不用判断了
Re=1;
break;
}
}
//判断是否重复,重复则继续大循环,否则追加字符
if(Re){
continue;
}else{
Cut[Cut_L]=Raw[i];
Cut_L++;
}
//抑或是使用Cut_L是否和j相等来判断是否有重复字符,更省内存
}
//Output
printf("%sn",Cut);
system("pause");
return 0;
}

突然想起来大学计算机课的时候怎么就不知道找你呢
哦。。。你在上学 