#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
char * dic1 = "A 3 HIL JM O 2TUVWXY5";
char * dic2 = "1SE Z 8 ";
int main ( int argc, char * argv[] ) {
char s[32];
while( fgets ( s, 32, stdin ) != NULL ) {
int len = strlen( s );
if( len > 0 ) s[ --len ] = '\0';
bool pal = true, mir = true;
int i;
for( i = 0; i < ceil( len / 2.0f ); i++ )
if( s[ i ] != s[ len - 1 - i ] ) {
pal = false;
i = len;
}
for( i = 0; i < ceil( len / 2.0f ); i++ ) {
char c1 = s[ i ];
char c2 = s[ len - 1 - i ];
if( c1 >= 'A' && c1 <= 'Z' ) c1 = dic1[ c1 - 'A' ];
else if( c1 >= '1' && c1 <= '9' ) c1 = dic2[ c1 - '1' ];
else { mir = false; i = len; }
if( mir ) {
if( c1 == ' ' || c1 != c2 ) {
mir = false;
i = len;
}
}
}
printf( "%s", s );
if( !pal && !mir )
printf( " -- is not a palindrome.\n\n" );
else if( pal && !mir )
printf( " -- is a regular palindrome.\n\n" );
else if( !pal && mir )
printf(" -- is a mirrored string.\n\n");
else
printf(" -- is a mirrored palindrome.\n\n");
}
return 0;
}
401 - Palindromes
最新推荐文章于 2024-04-29 22:18:42 发布