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;
}
(新手