字符串处理。
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;
}
#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;
}