问题介绍
提示用户输入一组字符串,然后将字符串按照ascii码顺序从小到大排列,并且删除重复的字符串,打印排列好的字符串,输出删除字符的个数。
C语言实现
第一种方法:先排序,再删除重复字符
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int rank(char* s);
int main(int argc,char* argv[])
{
char a[100];
printf("请输入字符串\n");
scanf("%s",a);
printf("删除了%d个字符串以后字符串为:%s\n",rank(a),a);
return 0;
}
int rank(char str[])
{
int flag; //标志排序是否完成
int i,j,temp;
//排序
for(j=strlen(str)-1;j>=0;j--) {
flag=0;
for(i=0;istr[i+1]) {
flag=1;
temp=str[i];
str[i]=str[i+1];
str[i+1]=temp;
}
}
if(!flag)
break;
}
//删除重复字符
for(i=1;str[i]!='\0';i++) {
if(str[i]==str[i-1])
flag++;
else
str[i-flag]=str[i];
}
str[strlen(str)-flag]='\0';
return flag;
}
第二种方法:使用桶排序,较快,代码稍候补上
结果演示
请输入字符串
11223333haaa
删除了7个字符串以后字符串为:123ah