UVa 401 Palindromes

UVa 401 

每例输出之间有一行空行。。


#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;

int cmirpal(char c){
	if(c=='A'||c=='H'||c=='I'||c=='M'||c=='O'||c=='T'||
			c=='U'||c=='V'||c=='W'||c=='X'||c=='Y'||c=='1'||c=='8')
		return 1;
	return 0;
}

int mir(char c1, char c2){
	if(c1=='E'&&c2=='3')
		return 1;
	if(c1=='3'&&c2=='E')
			return 1;
	if(c1=='L'&&c2=='J')
			return 1;
	if(c1=='J'&&c2=='L')
			return 1;
	if(c1=='S'&&c2=='2')
			return 1;
	if(c1=='2'&&c2=='S')
				return 1;
	if(c1=='Z'&&c2=='5')
			return 1;
	if(c1=='5'&&c2=='Z')
			return 1;
	return 0;
}

int main(){
	char str[25];
	char stack[12];
	int mirror = 1, palin = 1;
	while(scanf("%s",str)!=EOF){
		mirror = 1, palin = 1;
		int s = strlen(str);
		int idx = 0, i;
		memset(stack,0,sizeof(stack));
		for(i = 0;i<s/2;i++){
			stack[idx++] = str[i];
		}
		if(s%2){
			if(!cmirpal(str[i++])){
				mirror = 0;
				//printf("m%d ",i-1);//
			}
		}
		for(;i<s;i++){
			idx--;
			if(stack[idx]==str[i]){
				if(!cmirpal(str[i])){
					mirror = 0;
					//printf("m%d ",i);//
				}
			}
			else{
				palin = 0;
				//printf("p%d ",i);//
				if(!mir(stack[idx],str[i])){
					mirror = 0;
					//printf("m%d ",i);//
				}
			}
			if(!palin&&!mirror)
				break;
		}
		if(palin&&mirror)
			printf("%s -- is a mirrored palindrome.\n",str);
		else if(palin&&!mirror)
			printf("%s -- is a regular palindrome.\n",str);
		else if(!palin&&mirror)
			printf("%s -- is a mirrored string.\n",str);
		else
			printf("%s -- is not a palindrome.\n",str);
		printf("\n");

	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值