UVa 401 - Palindromes

大意:判断输入的字符串是否为回文串和“镜像串”(不知道怎么翻译,一个字母的补由题目给出,如下)

A list of all valid characters and their reverses is as follows.


CharacterReverseCharacterReverseCharacterReverse
AAMMYY
B N Z5
C OO11
D P 2S
E3Q 3E
F R 4 
G S25Z
HHTT6 
IIUU7 
JLVV88
K WW9 
LJXX  
 
 

题目并不难。分别写判断回文串和补串的函数就简单了。值得注意的是:A mirrored string is a string for which when each of the elements of the string is changed to its reverse (if it has a reverse) and the string is read backwards the result is the same as the original string.这句话的重点是如果某个字母没有reverse,那么这个串就不符号,而不是某个字母没有就忽略这个字母,我一开始就是这样理解错了。

 

#include<iostream>
#include<cstring>
using namespace std;
char Reverse(char c)//表 
{
	switch(c)
	{
	case 'A':return 'A';
	case 'E':return '3';
	case 'H':return 'H';
	case 'I':return 'I';
	case 'J':return 'L';
	case 'M':return 'M';
	case 'L':return 'J';
	case 'O':return 'O';
	case 'S':return '2';
	case 'T':return 'T';
	case 'U':return 'U'; 
	case 'V':return 'V';
	case 'W':return 'W';
	case 'X':return 'X';
	case 'Y':return 'Y';
	case 'Z':return '5';
	case '2':return 'S';
	case '3':return 'E';
	case '5':return 'Z';
	case '8':return '8';
	}
	return 0;
}
bool Palindrome(char s[])//判断回文串 
{
	int i,n;
	n=strlen(s);
	for(i=0;i<n;i++)
	{
		if(s[i]!=s[n-i-1])
			return false;
	}
	return true;
}
bool Mirrored(char s[])//判断镜像串 
{
	int i,n;
	n=strlen(s);
	for(i=0;i<n;i++)
	{
		if(Reverse(s[i])!=s[n-i-1])
			return false;
	}
	return true;
}
const int MAX=20 + 5;
int main()
{
	char s[MAX];
	bool fM,fP;
	while(cin>>s)
	{
		fM=Mirrored(s);
		fP=Palindrome(s);
		if(fP)//四种情况 
		{
			if(fM)
				cout<<s<<" -- is a mirrored palindrome."<<endl;
			else
				cout<<s<<" -- is a regular palindrome."<<endl;
		}
		else
		{
			if(fM)
				cout<<s<<" -- is a mirrored string."<<endl;
			else
				cout<<s<<" -- is not a palindrome."<<endl;
		}
		cout<<endl;
	}
	return 0;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值