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 }