码迷,mamicode.com
首页 > 其他好文 > 详细

1002 方便记忆的电话号码

时间:2019-09-11 10:12:14      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:ios   vector容器   方便   重复   mat   mes   name   个数   统一   

思路:

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 }

 

技术图片

 

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

 

1002 方便记忆的电话号码

标签:ios   vector容器   方便   重复   mat   mes   name   个数   统一   

原文地址:https://www.cnblogs.com/sweet-ginger-candy/p/11504037.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!