码迷,mamicode.com
首页 > 其他好文 > 详细

uva 401 Palindromes

时间:2014-07-30 10:03:43      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   2014   html   

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>


using  namespace std;
#define bug cout<<"bug----->\n"
#define MAXN 10001;
char same[]={"AHIMO0TUVWXY18"};


bool mirror(string s)
{
    int len=s.length();
    if(len%2)
    {
        int ok=1;
        int k=strlen(same);
//        cout<<len<<endl;
//        cout<<s[len/2]<<endl;
        for(int i=0;i<k;i++)
            if(s[len/2]==same[i])
            {
                ok=0;
                break;
            }


        if(ok)
            return false;
    }
    for(int i=0;i<len/2;i++)
    {
        switch(s[i])
        {
            case 'A': if(s[len-1-i]!='A') return 0;break;
            case 'E': if(s[len-1-i]!='3') return 0;break;
            case '3': if(s[len-1-i]!='E') return 0;break;
            case 'H': if(s[len-1-i]!='H') return 0;break;
            case 'I': if(s[len-1-i]!='I') return 0;break;
            case 'J': if(s[len-1-i]!='L') return 0;break;
            case 'L': if(s[len-1-i]!='J') return 0;break;
            case 'M': if(s[len-1-i]!='M') return 0;break;
            case 'O': if(s[len-1-i]!='0'&&s[len-1-i]!='O') return 0;break;
            case '0': if(s[len-1-i]!='0'&&s[len-1-i]!='O') return 0;break;
            case 'S': if(s[len-1-i]!='2') return 0;break;
            case '2': if(s[len-1-i]!='S') return 0;break;
            case 'T': if(s[len-1-i]!='T') return 0;break;
            case 'U': if(s[len-1-i]!='U') return 0;break;
            case 'V': if(s[len-1-i]!='V') return 0;break;
            case 'W': if(s[len-1-i]!='W') return 0;break;
            case 'X': if(s[len-1-i]!='X') return 0;break;
            case 'Y': if(s[len-1-i]!='Y') return 0;break;
            case 'Z': if(s[len-1-i]!='5') return 0;break;
            case '5': if(s[len-1-i]!='Z') return 0;break;
            case '1': if(s[len-1-i]!='1') return 0;break;
            case '8': if(s[len-1-i]!='8') return 0;break;
            default :return 0;
        }
    }
    return true;
}




bool pali(string s)
{
    int len=s.length();
    for(int i=0;i<len/2;i++)
        if(s[i]!=s[len-1-i])
            return false;
    return true;
}




int main()
{
    string s;
    while(cin>>s)
    {
        bool a1=mirror(s),a2=pali(s);
        if(a1&&a2) cout<<s<<" -- is a mirrored palindrome."<<endl;
        else if(a1) cout<<s<<" -- is a mirrored string."<<endl;
        else if(a2) cout<<s<<" -- is a regular palindrome."<<endl;
        else cout<<s<<" -- is not a palindrome."<<endl;
        cout<<"\n";
    }


    return 0;
}



22行的switch函数看的真是心酸。

其实可以用两个数组,就ok!


char one[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
char two[]="A   3  HIL JM O   2TUVWXY51SE Z  8 ";

uva 401 Palindromes,布布扣,bubuko.com

uva 401 Palindromes

标签:style   blog   color   os   io   for   2014   html   

原文地址:http://blog.csdn.net/code_or_code/article/details/38292983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!