标签:style blog color os io ar for div 代码
487-3279是一种转化题,按照题目要求将输入转化为规定的格式,再按照某种格式输出。
本题的要求:
将输入的一个字符串按照如下转化规则进行转化,并判断转化后是否有相同的字符串,若有则输出该字符串及出现的次数,如没有则输出No duplicates.
转化规则:
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
Q、Z、-不进行映射
解题思路:
将输入的字符串按要求进行转化后作为map的主键,将出现的次数作为主键的值记录。
解题代码:
1 #include <iostream> 2 #include <map> 3 #include <string> 4 using namespace std; 5 6 string OriginToResult(string origin) 7 { 8 string result=""; 9 int i=0; 10 for(i=0;origin[i]!=‘\0‘;i++) 11 { 12 if(result.length()==3) result+="-"; 13 if(origin[i]>=‘0‘&&origin[i]<=‘9‘) 14 result+=origin[i]; 15 else if(origin[i]>=‘A‘&&origin[i]<=‘P‘) 16 result+=((origin[i]-‘A‘)/3+2+‘0‘); 17 else if(origin[i]>=‘R‘&&origin[i]<=‘Y‘) 18 result+=((origin[i]-‘A‘-1)/3+2+‘0‘); 19 else continue; 20 } 21 return result; 22 } 23 24 int main() 25 { 26 int n; 27 string sTmp,rTmp; 28 map<string,int> mResult; 29 map<string,int>::iterator l_it; 30 while(cin>>n) 31 { 32 for(int k=0;k<n;k++) 33 { 34 cin>>sTmp; 35 rTmp=OriginToResult(sTmp); 36 l_it=mResult.find(rTmp); 37 if(l_it==mResult.end()) 38 { 39 mResult.insert(pair<string,int>(rTmp,1)); 40 } 41 else 42 { 43 l_it->second++; 44 } 45 } 46 if((int)mResult.size()==n) 47 { 48 cout<<"No duplicates."<<endl; 49 } 50 else 51 { 52 for(l_it=mResult.begin();l_it!=mResult.end();l_it++) 53 { 54 if(l_it->second>1) 55 { 56 cout<<l_it->first<<" "<<l_it->second<<endl; 57 } 58 } 59 } 60 mResult.clear(); 61 } 62 return 0; 63 }
标签:style blog color os io ar for div 代码
原文地址:http://www.cnblogs.com/lightbird/p/3956422.html