登录

在这个站点登录

保存我的登录记录

<<忘记密码?

还没有账号?点此注册>>

Jerry

9.3 删除重复字符

分享到:

本文已被浏览3163

题目:输入一串字符,其中包含若干个重复的字符,编写程序 删除重复字符 .

算法解析:依次挑出第一个字符,依次和之间保留的字符进行比较,如果之前存在相同的字符,则跳过当前字符,否则需要将当前字符保存在最后面,之后再输出保留的字符.

算法描述:

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;
}

最后贴上一个图片:
9.3 删除重复字符

 手机扫描左边的二维码,立刻将文章收入手机!
 微信扫描左边二维码,点击右上角即可分享到朋友圈!
严禁任何非授权的采集与转载,转载须经站长同意并在文章显著位置标注本文连接,站长保留追究法律责任的权利.

评论

  1. GJJ
    #1

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

    2015-03-21

 您需要 先登录 才可以回复.