字符串处理。

 

CODE:

 

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctype.h>
#include <cstring>
using namespace std;
char ss[27] = "A   3  HIL JM O   2TUVWXY5";
char sd[10] = "1SE Z  8";
int check1(char *str)
{
    int len = strlen(str);
    for(int i = 0; i <= len/2; i++)
    {
        if(str[i] != str[len-i-1]) return 0;
    }
    return 1;
}

int check2(char *s)
{
    int len = strlen(s);
    for(int i = 0; i <= len/2; i++)
    {
        if(isalpha(s[i]) && s[len-i-1] != ss[s[i]-'A']) return 0;
        if(isdigit(s[i]) && s[len-i-1] != sd[s[i]-'1']) return 0;
    }
    return 1;
}

int main()
{
    char s[101];
    while(~scanf("%s", s))
    {
        printf("%s -- ", s);
        int flag1 = 0, flag2 = 0;
        for(int i = 0; i < strlen(s); i++) if(s[i] == '0') s[i] = 'O';
        flag1 = check1(s);
        flag2 = check2(s);
        if(!flag1 && !flag2) printf("is not a palindrome.\n");
        if(flag1 && !flag2) printf("is a regular palindrome.\n");
        if(!flag1 && flag2) printf("is a mirrored string.\n");
        if(flag1 && flag2) printf("is a mirrored palindrome.\n");
        printf("\n");
    }
    return 0;
}

 

posted on 2012-09-22 16:35  有间博客  阅读(238)  评论(0编辑  收藏  举报