简单字符串处理,wa了十几次后发现是自己最后的空格格式控制出了错,晕
tmd,不管wa了多少次,我也一定要ac
#include <bits/stdc++.h>
using namespace std;
string dd[1000];
void init()
{
dd['1']="1";dd['0']="0";
dd['2']=dd['A']=dd['B']=dd['C']="2";
dd['3']=dd['D']=dd['E']=dd['F']="3";
dd['4']=dd['G']=dd['H']=dd['I']="4";
dd['5']=dd['J']=dd['K']=dd['L']="5";
dd['6']=dd['M']=dd['N']=dd['O']="6";
dd['7']=dd['P']=dd['R']=dd['S']="7";
dd['8']=dd['T']=dd['U']=dd['V']="8";
dd['9']=dd['W']=dd['X']=dd['Y']="9";
dd['Q']=dd['Z']="";
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int cass;
init();
scanf("%d",&cass);
int kkk=0;;
while(cass--){
if (kkk==1){
printf("\n");
} else kkk=1;
int n;scanf("%d",&n);
map<string,int> mapdata;
string a[100005];
int num=0;
for (int is=0;is<n;is++){
char ss[105];
scanf("%s",ss);
getchar();
string str="";
for (int i=0;i<strlen(ss);i++){
if ((ss[i]<='9'&&ss[i]>='0')||(ss[i]<='Z'&&ss[i]>='A')){
str+=(dd[ss[i]]);
if (str.length()==3) str+="-";
}
}
pair<map<string,int>::iterator, bool> Insert_Pair;
Insert_Pair=mapdata.insert(pair<string,int>(str,1));
if (Insert_Pair.second!=true){
mapdata[str]++;
} else a[num++]=str;
}
if (num>0) sort(a,a+num);
int ans=0;
for (int i=0;i<num;i++){
if (mapdata[a[i]]>1){
cout<<a[i]<<" "<<mapdata[a[i]]<<endl;;
ans++;
}
}
if (ans==0){
printf("No duplicates.\n");
}
}
return 0;
}