P2037 电话号码

发布时间 2023-06-07 21:21:14作者: jiangchenyangsong

远古题解 2020-05-12

此题,关键是字符串的转换
话不多说,献上代码

/*#include<iostream>
#include<algorithm>
#include<cstring>*/
#include<bits/stdc++.h>
using namespace std;
string b[100002];
int a;
char IT[26]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7',' ','7','7','8','8','8','9','9','9',' '};//26个字母对应的值 
int main() 
{
	cin>>a;
	for(int i=1;i<=a;i++) 
	{
		string c;
		cin>>c;
		int len=c.size();
		for(int j=0;j<len;j++) 
		{
			if(c[j]>='0'&&c[j]<='9') b[i]+=c[j];
			else if(c[j]>='A'&&c[j]<='Y'&&c[j]!='Q') b[i]+=IT[c[j]-'A']; 
		} //把字符串转换成号码 
	}
	sort(b+1,b+1+a); //给号码排序 
	bool k=false;
	int num=1;
	for(int i=2;i<=a+1;i++)
	{
		if(b[i-1]!=b[i])
		{
			if(num>=2)
			{
				cout<<b[i-1].substr(0,3)<<"-"<<b[i-1].substr(3,4)<<" "<<num<<endl; 
				k=true;
			}
			num=1;
		} 
		else
		num++; //统计相同号码的个数 
	}
	if(!k) cout<<"No duplicates."<<endl;
	return 0;
}