笔试练习

 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!="")
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 }
View Code
原文地址:https://www.cnblogs.com/fkissx/p/4469450.html