第一次用到是在‘校内赛总结’扫地那道题里面,大同小异
map<string,int>str 可以专用做做字符串的匹配之类的处理
string donser;
str [donser]++ 自动存donser到map并且值加一,如果发现重复元素不新建直接加一,
map第一个参数是key,默认字典序升序排列key
map<string,int>::iterator ii; map的迭代器
for(ii=outputer.begin();ii!=outputer.end();++ii) 迭代器遍历
{
if(ii->second>1) map第一个参数 ii->first或者 (*ii).first ;第二个参数 ii->second或者 (*ii).second
{
donser=ii->first;
cout<<donser<<" "<<ii->second<<endl;
}
}
POJ 1002 http://poj.org/problem?id=1002
对电话号码做化数字处理,然后匹配
#include<iostream> #include<cstdio> #include<string> #include<map> using namespace std; string astr; void deal() {int len=astr.size();for(int i=0;i<len;i++){if(astr[i]=='-'){astr.erase(i,1);i--;continue;}if(astr[i]=='A'||astr[i]=='B'||astr[i]=='C'){astr.replace(i,1,"2");}if(astr[i]=='D'||astr[i]=='E'||astr[i]=='F'){astr.replace(i,1,"3");}if(astr[i]=='G'||astr[i]=='H'||astr[i]=='I'){astr.replace(i,1,"4");}if(astr[i]=='J'||astr[i]=='K'||astr[i]=='L'){astr.replace(i,1,"5");}if(astr[i]=='M'||astr[i]=='N'||astr[i]=='O'){astr.replace(i,1,"6");}if(astr[i]=='P'||astr[i]=='R'||astr[i]=='S'){astr.replace(i,1,"7");}if(astr[i]=='T'||astr[i]=='U'||astr[i]=='V'){astr.replace(i,1,"8");}if(astr[i]=='W'||astr[i]=='X'||astr[i]=='Y'){astr.replace(i,1,"9");}}return; } int main() {int T,lable=0;map<string,int>outputer;scanf("%d",&T);int i=0,j=T;while(j--){cin>>astr;deal();outputer[astr]++;}map<string,int>::iterator ii;for(ii=outputer.begin();ii!=outputer.end();++ii){if(ii->second>1){astr=ii->first;astr.insert(3,"-");cout<<astr<<" "<<ii->second<<endl;lable=1;}}if(!lable) cout<<"No duplicates.";return 0; }