这题思路,就是翻译字符串(电话号码),统计出现的个数。
虽然有更快的代码(方法),但是接下来的代码绝对是非常方便,思路清晰的。
#include<stdio.h>
#include<map>
#include<string>
#include<iterator>
#include<iostream>
using namespace std;
char a[26]= {"2223334445556667777888999"};
int main(){
// freopen("poj1002.in","r",stdin);
map<string,int> m;
map<string,int>::iterator iter;
string t,s;
int i,j,k,n;
scanf("%d",&n);
for(i=0;i<n;i++){
cin>>s;
k=s.length();
for(j=0;j<k;j++){
if(s[j]<='Z'&&s[j]>='A')
t.push_back(a[s[j]-'A']);
else{
if(s[j]!='-')
t.push_back(s[j]);
}
}
t.insert(3,1,'-');
m[t]++;
t.clear();
}
bool dup=false;
for(iter=m.begin();iter!=m.end();iter++){
if(iter->second>1) {
dup=true;
cout<<iter->first<<' '<<iter->second<<endl;
}
}
if(!dup)
printf("No duplicates.\n");
return 1;
}