题意:求将字符串转化为数字后重复出现的次数
思路:map
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <cstring>
using namespace std;
map<int,int> s;
char str[128];
int num[] = {
2,2,2,
3,3,3,
4,4,4,
5,5,5,
6,6,6,
7,0,7,7,
8,8,8,
9,9,9,
};
int main(){
int t;
scanf("%d",&t);
int flag = 0;
for (int i = 0; i < t; i++){
scanf("%s",str);
int c = 0;
for (int j = 0; str[j]; j++){
if (isdigit(str[j]))
c = c * 10 + str[j] - '0';
else if (isalpha(str[j]))
c = c * 10 + num[str[j]-'A'];
}
s[c]++;
}
for (map<int,int>::iterator it = s.begin(); it != s.end(); it++)
if (it->second > 1){
flag = 1;
printf("%03d-%04d %d\n",it->first/10000,it->first%10000,it->second);
}
if (!flag)
printf("No duplicates.\n");
return 0;
}