注意输出空格时不能使用ends,否则会WA。就在我对这题感到无比绝望的时候,把ends改成" ",AC。
用map<string,int>很轻松就可以完成该题。
以下是我的代码:
#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#include<cstdio>
#include<cctype>
using namespace std;
const char kTable[]="2223334445556667777888999";
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
int T;
cin>>T;
bool first_output(true);
while(T--)
{
int n;
cin>>n;
map<string,int> r;
for(int i=1;i<=n;i++)
{
string t;
cin>>t;
t.erase(remove(t.begin(),t.end(),'-'),t.end());
for(int j=0;j<t.size();j++)
if(!isdigit(t[j]))
t[j]=kTable[t[j]-'A'];
t.insert(3,"-");
r[t]++;
}
if(first_output)
first_output=false;
else
cout<<endl;
bool found(false);
for(map<string,int>::iterator i=r.begin();i!=r.end();i++)
if(i->second>1)
{
cout<<i->first<<" "<<i->second<<endl;
found=true;
}
if(!found)
cout<<"No duplicates."<<endl;
}
return 0;
}
posted on 2011-04-11 23:53
lee1r 阅读(503)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:字符串处理 、
题目分类:排序