PTA:7-4 删除重复字符

7-4 删除重复字符 

本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

输入格式

输入是一个以回车结束的非空字符串(少于80个字符)。

输出格式

输出去重排序后的结果字符串。

输入样例

ad2f3adjfeainzzzv

输出样例 

23adefijnvz

代码

#include<stdio.h>
#include<string.h>
int main()
{
    char arr[100],b[100];
    gets(arr);
    int j=0;
    for(int i=0;arr[i]!='\0';i++)//创立新的字符数组,去掉重复字符
    {
        int count = 0;//记录,如果count=1则说明重复了
        for(int k=i+1;arr[k]!='\0';k++)//k从i+1开始可以避免重复删除重复的数字
        {
            if(arr[i]==arr[k])
            {
                count = 1;
                break;//重复了打破,开始下一循环,
            }
        }
        if(count==0)//count=0,说明这个字符没有重复,记录在新的数组里面
        {
            b[j]=arr[i];
            j++;
        }
    }
    b[j+1]='\0';
    for(int i=0;b[i]!='\0';i++)//给新的字符数组从小到大排列,利用直接插入排序
    {
        int temp=b[i],j=i;//记录b[i]的值
        while(temp<b[j-1]&&j>0)//让temp与前面的字符比较(比较的ASCII码值)
        {
                b[j]=b[j-1];//将前面较小的字符往后移
                j--;//往前与前一个字符比较
        }
        if(j!=i)//说明前面的字符往后移过
            b[j]=temp;//将temp插入找好的b[j]里
    }
    puts(b);
    return 0;
}

(新手

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值