今天开始做网上一份字符串匹配专题。
这题当热身啦。
题意:规定号码的格式是 XXX-XXXX,
符号转换为数字的映射如下:
A, B, and C map to 2
D, E, and F map to 3
G, H, and I map to 4
J, K, and L map to 5
M, N, and O map to 6
P, R, and S map to 7
T, U, and V map to 8
W, X, and Y map to 9
There is no mapping for Q or Z.
有一些字符表示,按序显示重复的号码和重复的次数。
#include <iostream>
#include <map>
#include <string>

using namespace std;

const int MAX = 20;

char hash[]="22233344455566677778889999";


int main()
{
int i, j, n;
char ch[MAX],buf[MAX];

//freopen("input.txt", "r", stdin);

map<string, int> dir;

scanf("%d", &n);


for(i=0; i<n; ++i)
{
scanf("%s", ch);
int len = strlen(ch), t=0;
memset(buf, 0, sizeof(buf));

for(j=0; j<len; ++j)
{
if(ch[j]=='-')
continue;
if(ch[j]<='9' && ch[j]>='0')
buf[t++]=ch[j];
else
buf[t++]=hash[ch[j]-'A'];
if(t==3)
buf[t++]='-';
}
buf[t]='\0';

dir[string(buf)]++;
}

bool flag =false;

for(map<string,int>::iterator iter = dir.begin(); iter!=dir.end(); ++iter)
{

if(iter->second!=1)
{
flag=true;
cout<<iter->first<<" "<<iter->second<<endl;
}
}

if(!flag)
cout<<"No duplicates." << endl;

// system("pause");

return 0;
}
posted on 2011-03-15 20:34
小阮 阅读(158)
评论(0) 编辑 收藏 引用 所属分类:
POJ