UVA - 401 Palindromes

//程序3-7 回文词
//收获:
//1、回文串和镜像串的判定(尤其镜像串,借用了一个常量数组)同时,用到了函数
//2、同时,这题的循环控制条件是有值得推敲之处,因为镜像串即便只剩下一个元素,还需要判定它的字符镜像是否是它本身
//3、此外,这题的结果输出,也是用了字符串数组,并且用到了2个变量jud1和jud2,利用两者的运算,成功地表示了所有的4种情况,十分巧妙 


#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
const char* a = "A   3  HIL JM O   2TUVWXY51SE Z  8 ";
const char* mes[4] = {"is not a palindrome.", "is a regular palindrome.", "is a mirrored string.", "is a mirrored palindrome."};
char r(char ch)
{
	if (isalpha(ch))
	return a[ch - 'A'];
	return a[25 + ch - '0'];
}
int main()
{
	char s[20];
	int jud1, jud2, len, i;
	while (cin >> s)
	{
		len = strlen(s);
		jud1 = jud2 = 1;//最开始,先当作又是回文数,又是镜像数
		for (i = 0; i < (len + 1) / 2; i++)
		{
			if (s[i] != s[len - 1 - i]) jud1 = 0;
			if (r(s[i]) != s[len - 1- i]) jud2 = 0;
		}
		cout << s << " -- " << mes[2 * jud2 + jud1] << endl << endl;
	}
		return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值