题目-删除重复字符
编写程序,将给定的字符串去掉重复的字符后,按照ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
具体分析
题目的表述是去重排序,实际上的处理步骤应该是先排序后去重,因为排序过后相同的字符会挨在一起,方便去重。
一般都是以ASCII码值的大小作为字符比较的标准,0~9 < A~Z < a~z。
按照ASCII码排序字符串可以参照整型数组的排序方式进行排序。
输入样例排序后的字符串为:23aaaddeffijnvzzz,只需将字符串中不同的字符按照顺序输出即可得到结果字符串。
代码
1 //删除重复字符并排序输出 2 #include<iostream> 3 using namespace std; 4 5 int main() 6 { 7 char ch[80]; 8 int n=0; //输入的字符个数 9 10 cin.get(ch[n]); 11 while(ch[n]!=' '){ 12 n++; 13 cin.get(ch[n]); 14 } 15 16 for(int i=0; i<n-1; i++){ //冒泡排序,从小到大 17 for(int j=0; j<n-1-i; j++){ 18 if(ch[j]>ch[j+1]){ 19 char temp; 20 temp = ch[j]; ch[j] = ch[j+1]; ch[j+1] = temp; 21 } 22 } 23 } 24 25 for(int i=0; i<n; i++){ 26 if(ch[i+1]!=ch[i]){ //重复的字符会因为ASCII码值相同而相邻 27 cout << ch[i]; 28 } 29 } 30 31 return 0; 32 }