今天开始做网上一份字符串匹配专题。
这题当热身啦。
题意:规定号码的格式是 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
小阮 阅读(155)
评论(0) 编辑 收藏 引用 所属分类:
POJ