UVa 401 Palindromes

UVa 401 Palindromes

题目大意:Palindrome的定义是,一个字符串从左向右和从右向左读是一样的;Mirrored string的定义是,一个字符串左右对称;Mirrored palindrome就是既palindrome又mirrored的字符串。对称的关系表题目中已给出。

以下是我的代码:
#include < stdio.h >
#include
< string .h >
const   char  one[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789 " ;
const   char  two[] = " A   3 HIL JM O   2TUVWXY51SE Z 8  " ;
const   long  len = 35 ;
bool  Palindrome( const   char   * s)
{
    
long begin=0,end=strlen(s)-1;
    
while(begin<=end)
    
{
       
if(s[begin]==s[end])
       
{
          begin
++;
          end
--;
       }

       
else
         
return false;
    }

    
return true;
}

long  pos( char  ch)
{
    
for(long i=0;i<len;i++)
      
if(one[i]==ch)
        
return i;
    
return len;
}

bool  Mirror( const   char   * s)
{
    
long begin=0,end=strlen(s)-1;
    
while(begin<=end)
    
{
       
long tmp=pos(s[begin]);
       
if(s[end]==two[tmp])
       
{
          begin
++;
          end
--;
       }

       
else
         
return false;
    }

    
return true;
}

int  main()
{
    
char str[1000];
    
while(gets(str)!=0)
    
{
       
bool a=false,b=false;
       a
=Palindrome(str);
       b
=Mirror(str);
       
if(a&&b)
         printf(
"%s -- is a mirrored palindrome.\n",str);
       
else if(a)
         printf(
"%s -- is a regular palindrome.\n",str);
       
else if(b)
         printf(
"%s -- is a mirrored string.\n",str);
       
else
         printf(
"%s -- is not a palindrome.\n",str);
       putchar(
'\n');
    }

return 0;
}

你可能感兴趣的:(UVa 401 Palindromes)