map容器在解决字符串问题的方便之处

来源:互联网 发布:java如何跳出for循环 编辑:程序博客网 时间:2024/04/29 04:27

题目:UVa  OJ    第401题   Palindromes

题目链接: 点击打开链接

代码如下:

#include <iostream>#include <string>#include <map>#include <algorithm>using namespace std;int main(){    map<char,char> m;    m['E']='3';m['3']='E';m['J']='L';m['L']='J';    m['S']='2';m['2']='S';m['Z']='5';m['5']='Z';    m['A']='A';m['B']='a';m['C']='b';m['D']='c';    m['F']='d';m['G']='e';m['H']='H';m['I']='I';    m['K']='f';m['M']='M';m['N']='g';m['O']='O';    m['P']='h';m['Q']='i';m['R']='j';m['T']='T';    m['U']='U';m['V']='V';m['W']='W';m['X']='X';    m['Y']='Y';m['4']='k';m['6']='l';m['7']='m';    m['9']='n';m['1']='1';m['8']='8';    int i,flag,Flag;    string s,st;    while(cin>>s)    {        flag=0,Flag=0;        st=s;        reverse(s.begin(),s.end());        if(s==st) flag=1;        for(i=0;i<s.size();i++)            s[i]=m[s[i]];        if(s==st) Flag=1;        if(flag==1&&Flag==1)           cout<<st<<" -- is a mirrored palindrome."<<endl;        else if(flag==0&&Flag==1)           cout<<st<<" -- is a mirrored string."<<endl;        else if(flag==0&&Flag==0)           cout<<st<<" -- is not a palindrome."<<endl;        else if(flag==1&&Flag==0)           cout<<st<<" -- is a regular palindrome."<<endl;        cout<<endl;    }    return 0;}