POJ 1002求487-3279解题报告——【PKU ACM】

这道题整体没有太多难度。。。

#include<iostream> #include<vector> #include<string> #include <cstdlib> #include <cctype> using namespace std; void standardization(string *pNum); //将输入的号码全部标准化 char mapping(char num); //映射函数,将数字和字母的映射关系写出 int comp(const void *a, const void *b){ return ((string*)a)->compare((*(string*)b)); } int main(){ int num; //输入的最大数目; string *phoneNum; //用来存储电话簿 bool flag=true; cin>>num; phoneNum=new string[num]; for(int i=0;i<num;++i){ //一边输入数据,一边标准化数据 cin>>*(phoneNum+i); standardization(phoneNum+i); } qsort(phoneNum,num,sizeof(*phoneNum),comp);//对输入的数据进行快速排序 for(int i=0,count=1;i<num;++i){ //计算重复次数 if(i<num-1&&(*(phoneNum+i)).compare((*(phoneNum+i+1)))==0) ++count; else if(count!=1){ flag=false; cout<<*(phoneNum+i)<<" "<<count<<endl; count=1; } } if(flag) cout<<"No duplicates."<<endl; //如果没有重复输出 return 0; } void standardization(string *pNum){ string::iterator it; for(it=pNum->begin();it!=pNum->end();){ *it=mapping(*it); if(isdigit(*it)){ ++it; } else pNum->erase(it); } pNum->insert(3,"-"); } char mapping(char num){ //映射函数 switch(num){ case '0': case '1': return num; case '2':case 'A':case 'B':case 'C': return '2'; case '3':case 'D':case 'E':case 'F': return '3'; case '4':case 'G':case 'H':case 'I': return '4'; case '5':case 'J':case 'K':case 'L': return '5'; case '6':case 'M':case 'N':case 'O': return '6'; case '7':case 'P':case 'R':case 'S': return '7'; case '8':case 'T':case 'U':case 'V': return '8'; case '9':case 'W':case 'X':case 'Y': return '9'; default: return num; } }

POJ 1002求487-3279解题报告——【PKU ACM】_第1张图片

你可能感兴趣的:(c,String,iterator,存储,电话)