9.3 删除重复字符
本文已被浏览3355次
题目:输入一串字符,其中包含若干个重复的字符,编写程序 删除重复字符 .
算法解析:依次挑出第一个字符,依次和之间保留的字符进行比较,如果之前存在相同的字符,则跳过当前字符,否则需要将当前字符保存在最后面,之后再输出保留的字符.
算法描述:
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; }
突然想起来大学计算机课的时候怎么就不知道找你呢 哦。。。你在上学
呵呵哒~~