401 Palindrome

本文探讨了一种识别镜像回文字符串的方法,通过计算在常量表中的位置来判断字符串的特性。文章详细介绍了算法实现过程,并通过实例展示了如何使用此方法进行验证。

这道题最初我是没理解清楚题意,我以为那些reverse栏空白的字母是省略了.后来在这个论坛找到了更多的测试数据,发现了自己理解错了,重新读题= =,修改了下代码- -.弄了很久才AC

我的思路和别人有点不同的是,我是通过计算来得到在常量表中的位置

好吧= =  这道题本来该总结很多的,今天来忘记很多了.

#include<stdio.h>
#include
<string.h>
#include
<ctype.h>
const int maxn = 1000;
int main()
{
#ifdef LOCAL
freopen(
"input.txt", "r", stdin);
#endif
int state_m = 1, state_p = 1;
int len;
int a, x; //a字符在数组中位置,x数组中间位置
char s[maxn];
const char c[] = "A 3 HIL JM O 2TUVWXY51SE Z 89";
while(scanf("%s", s) != EOF)
{
printf(
"%s", s);
state_m
= 1; state_p = 1;
len
= strlen(s);
x
= (len + 1) / 2;
for(int i = 0; i < x; i++)
{
a
= (int)(isdigit(s[i]) ? s[i] - 23: s[i] - 65);
if(s[len-1-i] == c[a]) //判断是否为mirrored
{
if(s[len-1-i] != s[i]) state_p = 0;
}
else
{
state_m
= 0;
if(s[len-1-i] != s[i]) state_p = 0;
}
}
if(state_m && state_p) printf(" -- is a mirrored palindrome.\n\n");
else if(state_m) printf(" -- is a mirrored string.\n\n");
else if(state_p) printf(" -- is a regular palindrome.\n\n");
else printf(" -- is not a palindrome.\n\n");
memset(s,
0, sizeof(s));

}
return 0;
}

转载于:https://www.cnblogs.com/shixuehunk/archive/2011/07/13/2105714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值