字符串处理
#include <stdio.h>
const int ch[26]={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};
int a[10000001],max=0;
void work(char s[])
{
int k=0;
for (int i=0; s[i]!='\0'; i++)
if (s[i]>='0' && s[i]<='9')
k=k*10+s[i]-'0';
else
if (s[i]>='A' && s[i]<='Z')
k=k*10+ch[s[i]-'A'];
a[k]++;
if (k>max) max=k;
}
int main()
{
int n;
char str[100];
scanf("%d",&n);
for (int i=0; i!=n; i++)
{
scanf("%s",str);
work(str);
}
bool flag=true;
for (int i=0; i<=max; i++)
if (a[i]>1)
{
flag=false;
printf("%03d%c%04d %d\n",i/10000,'-',i%10000,a[i]);
}
if (flag)
printf("No duplicates.\n");
return 0;
}