UVA 401 Palindromes

字符串处理。

 

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;
}

 

你可能感兴趣的:(ROM)