30分求助
查看原帖
30分求助
1211899
Bobi2014楼主2024/7/30 08:43
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 1;
short phone[27] = {0,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,0};
map<string,int> vis;
string bis[N];
string tmp,s;
int n,cnt;
string getStr(string str){
	int len = str.length();
	for(int i = 0;i < len;i ++){
		if(str[i] >= 'A' and str[i] <= 'Z'){
			str[i] = phone[str[i] - 'A' + 1] + '0'; 
		}
	}
	for(int i = 0;i < len;i ++){
		if(str[i] == '-'){
			tmp = str;
			str = tmp.substr(0,i) + tmp.substr(i + 1,len - i + 1);
			len = str.length();
			i --;
		}
	}
	tmp = str;
	str = tmp.substr(0,3) + "-" + tmp.substr(3,4);
	return str;
}
int main(){
	scanf("%d",&n);
	for(int i = 1;i <= n;i ++){
		cin >> s;
		string str = getStr(s);
//		cout << str << endl;
		vis[str] ++; 
		if(vis[str] == 2){
			bis[++cnt] = str;
		}
	}
	if(cnt == 0){
		printf("No duplicates.");
	}else{
		for(int i = 1;i <= cnt;i ++){
			printf("%s %d\n",bis[i].c_str(),vis[bis[i]]);
		}
	}
	return 0;
}
2024/7/30 08:43
加载中...