#include <iostream>
#include <map>
#include <string>
using namespace std;
char array[32]={"2223334445556667Q77888999Z"};//下标0代表'A',值为2
int main()
{
int n;
string str;
while(~scanf("%d",&n))
{
map<string,int> m;
int num=0,f=0;
for(int i=0;i<n;i++)
{
cin>>str;
for(int j=0;j<str.size();j++)
{
if(str[j]=='-')
str.erase(j--,1);/*删除所有的'-',j--是因为后面的字符替换了前面的,
下一次循环时应该从删除处开始判断*/
else if(str[j]>='A'&&str[j]<='Z')
str[j]=array[str[j]-'A'];
}
str.insert(3,1,'-');//在第三个位置插入'-'
m[str]++;//如果str存在,则m[str]++,否则添加str,初始值为0,并m[str]++
}
for(map<string,int>::iterator it=m.begin();it!=m.end();it++)//使用迭代器(即指针)访问map内部元素
if(it->second>1)//
{
f=1;//若进入这里,则说明存在重复号码
printf("%s %d\n",it->first.c_str(),it->second);
}
if(!f)
printf("No duplicates.\n");
}
return 0;
}
/*
数据:
3
-----1234567
-1-2-3-4-567
0000000
*/
07-13
07-13
07-13
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交