1002 方便记忆的电话号码

思路:

1.提取英文字母,将其转换成数字。因为‘-’所在位置不同则在最初转化阶段不用管它,后面统一将‘-’删除再插入位置4。

2.采用set列表,存储12个字符串,用count()统计出相同字符串的个数,最后用指针i指定各个不同的字符串。x为一个vector容器,用来进行字母转换数字以及调整电话号码格式。

3.运用队列语法规则。erase()删除集合中元素。lower_bound()返回大于或等于某值的第一个元素的迭代器。upper_bound()返回大于某个值元素的迭代器。

4.x.size()没有符号,为保持前后符号一致需要设置unsigned int i;

5.remove(v.begin(),v.end(),'-');删除v中所有为‘-’的元素。

6.设置maxcount==0目的为确认没有重复字符串。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<string>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<set>
 7 using namespace std;
 8 int main(){
 9     int n;
10     cin>>n;
11     multiset<string>p;
12     while(n--){
13         string x;
14         cin>>x;
15         for(unsigned int i=0;i<x.size();i++){
16             switch(x.at(i))
17             {
18             case'A':
19             case'B':
20             case'C':
21                 {x.at(i)='2';
22                 break;}
23             case'D':
24             case'E':
25             case'F':
26                 {x.at(i)='3';
27                 break;}
28             case'G':
29             case'H':
30             case'I':
31                 {x.at(i)='4';
32                 break;
33                 }
34             case'J':
35             case'K':
36             case'L':
37                 {x.at(i)='5';
38                 break;
39                 }
40             case'M':
41             case'N':
42             case'O':
43                 {x.at(i)='6';
44                 break;
45                 }
46             case'P':
47             case'R':
48             case'S':
49                 {x.at(i)='7';
50                 break;
51                 }
52             case'T':
53             case'U':
54             case'V':
55                 {x.at(i)='8';
56                 break;
57                 }
58             case'W':
59             case'X':
60             case'Y':
61                 {x.at(i)='9';
62                 break;
63                 }
64             }
65         }
66     x.erase(remove(x.begin(),x.end(),'-'),x.end());
67     x.insert(3,"-");
68     p.insert(x);
69     }
70     auto i=p.begin();
71     int maxcount=0,count=1;
72     while(i!=p.end()){
73         count=p.count(*i);
74         if(count>1){
75             maxcount=count;
76             cout<<*i<<" "<<count<<endl;
77         }
78         i=p.upper_bound(*i);
79     }
80     if(maxcount==0)
81         cout<<"No,duplicates."<<endl;
82     return 0;
83 }

结果正确但是无法通过测评系统。

猜你喜欢

转载自www.cnblogs.com/sweet-ginger-candy/p/11504037.html