![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 //去除重复字符并排序 2 /*运行时间限制:无限制 3 内容限制: 无限制 4 输入: 字符串 5 输出: 去除重复字符并排序的字符串 6 样例输入: aabcdefff 7 样例输出: abcdef 8 */ 9 //思路:计数排序,复杂度o(n) 10 #include <iostream> 11 #include<ctime> 12 #include<string> 13 using namespace std; 14 int main() 15 { 16 string input; 17 int max,min,len;//确定多大桶,实现动态分配 18 int i; 19 char q='p'; 20 21 while(q=='p') 22 { 23 cout<<"输入字符串:"; 24 getline(cin,input); 25 if(input!="\0") 26 { 27 max=input[0];min=input[0]; 28 for(i=0;i<input.size();i++) 29 { 30 if (input[i]>max) 31 max=input[i]; 32 if(input[i]<min) 33 min=input[i]; 34 } 35 len=max-min+1; 36 bool *C=new bool[len];//确定多大桶 37 for(i=0;i<len;i++) 38 C[i]=false; 39 for(i=0;i<input.size();i++) 40 { 41 C[input[i]-min]=true;//去重并排序 42 } 43 for(i=0;i<len;i++) 44 { 45 if (C[i])//输出 46 cout<<char(min+i); 47 } 48 } 49 cout<<endl<<"是否继续输入(p继续):"; 50 cin>>q; 51 } 52 53 return 0; 54 }