HDOJ - 1318 Palindromes


此页面通过工具从 csdn 导出,格式可能有问题。

题目: http://acm.hdu.edu.cn/showproblem.php?pid=1318


一般的字符串处理问题,一个共性:思路简单,代码繁琐。

譬如此题,首先会有一个问题要考虑:如何去建立 镜像字母表 。这里我采用的是两个常量字符串作为一一对应。

至于回文判断应该就不用说了吧。


代码如下:

#include <cstdio>
#include <cstring>
const char ch1[]="AEHIJLMOSTUVWXYZ123580";
const char ch2[]="A3HILJMO2TUVWXY51SEZ80";
char s[22];
int mir[130];
int pal(char *s){
	int n=strlen(s)-1;
	for (int i(0);i<=n/2;i++)
		if (s[i]!=s[n-i]) return 0;
	return 1;
}
int mirr(char* s){
	int n=strlen(s)-1;
	for (int i(0);i<=n/2;i++)
		if (mir[s[i]]<0 || mir[s[i]]!=s[n-i]) return 0;
	return 1;  
}
int main(){
	freopen("in.txt","r",stdin);
	for (int i('A');i<='Z';i++) mir[i]=-1;
	for (int i(0);i<22;i++) mir[ch1[i]]=ch2[i];
	while (scanf("%s",s)!=EOF){
		int a=pal(s),b=mirr(s);
		if (!(a+b)) printf("%s -- is not a palindrome.\n",s);
		else {
			if (a>b) printf("%s -- is a regular palindrome.\n",s);
			else {
				if (a<b) printf("%s -- is a mirrored string.\n",s);
				else {
					printf("%s -- is a mirrored palindrome.\n",s);
				}
			}
		}
		printf("\n");
	}
	return 0;
}

Accepted 0MS 220K 876 B


Avatar
huiren
Code Artisan

问渠那得清如许,为有源头活水来

相关

下一页
上一页
comments powered by Disqus