码迷,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             caseA:
19             caseB:
20             caseC:
21                 {x.at(i)=2;
22                 break;}
23             caseD:
24             caseE:
25             caseF:
26                 {x.at(i)=3;
27                 break;}
28             caseG:
29             caseH:
30             caseI:
31                 {x.at(i)=4;
32                 break;
33                 }
34             caseJ:
35             caseK:
36             caseL:
37                 {x.at(i)=5;
38                 break;
39                 }
40             caseM:
41             caseN:
42             caseO:
43                 {x.at(i)=6;
44                 break;
45                 }
46             caseP:
47             caseR:
48             caseS:
49                 {x.at(i)=7;
50                 break;
51                 }
52             caseT:
53             caseU:
54             caseV:
55                 {x.at(i)=8;
56                 break;
57                 }
58             caseW:
59             caseX:
60             caseY:
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
迷上了代码!