题意:求将字符串转化为数字后重复出现的次数
思路: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; }