UVa 401 - Palindromes

注意一个字符时要判断是否是镜像的情况。

#include <iostream>
#define MAXN 22
using namespace std;
char const *ch = "AEHIJLMOSTUVWXYZ12358";
char const *re = "A3HILJMO2TUVWXY51SEZ8";
bool bijiao(char a1,char b1){
    for(int i=0;i<MAXN;i++){
        if(a1==ch[i]&&b1==re[i])
            return 1;
    }
    return 0;
}
int main()
{
    string n,t;
    while(cin>>n){
        char a,b;
        int hw=1,jx=1;
        if(n.length()==1){
            if(bijiao(n[0],n[0]))
            {
                cout<<n[0]<<" -- is a mirrored palindrome."<<endl<<endl;
                continue;
            }
            else {
                cout<<n[0]<<" -- is a regular palindrome."<<endl<<endl;
                continue;
            }
        }
        for(int i=0;i<n.length()/2;i++){
            a=n[i],b=n[n.length()-i-1];
            if(!(n[i]==n[n.length()-i-1])){
                hw=0;
            }
            if(!bijiao(a,b)){
                jx=0;
           }
            if(hw==0&&jx==0){
                break;
            }
        }
        for(int i=0;i<n.length();i++){
            cout<<n[i];
        }
        if(hw==0&&jx==0){
             cout<<" -- is not a palindrome."<<endl;
        }
        if(hw==1&&jx==0){
            cout<<" -- is a regular palindrome."<<endl;
        }
        if(hw==0&&jx==1){
            cout<<" -- is a mirrored string."<<endl;
        }
        if(hw==1&&jx==1){
            cout<<" -- is a mirrored palindrome."<<endl;
        }
        cout<<endl;
    n="";
    }
}


你可能感兴趣的:(uva)