题目比较水,但是可以练练手,这里用map模板来实现重复计数,也可以用hash实现,用string的hash算法,就是太麻烦了,,
#include<iostream>
#include<string>
#include<map>
using namespace std;
char mapstr[] = "22233344455566670778889990";
int main()
{
int n;
map<string,int> newmap;
cin>>n;
while(n > 0){
string str;
string inputstr;
cin>>inputstr;
for(int i =0;i<inputstr.length();i++){
if(inputstr[i] == '-')
continue;
else if( inputstr[i]-'A' >=0 && inputstr[i]-'A' <=25)
str += mapstr[inputstr[i]-'A'];
else
str += inputstr[i];
}
str.insert(3,"-");
newmap[str]++;
n--;
}
map<string,int>::iterator iter = newmap.begin();
int total =0;
while(iter != newmap.end()){
if(iter->second >1){
cout<<iter->first<<" "<<iter->second<<endl;
total++;
}
iter++;
}
if(total == 0)
cout<<"No duplicates."<<endl;
return 0;
}