UVa 401 Palindromes——字符串

UVa 401是个我最喜欢的字符串题目。仅仅比我们C语言课上的判断回文串稍难了些,因为要求你判断两种字串——回文或是镜像。然后根据这东西有四种输出。

CE了五次。。。原因未知。。。

本来写ANSI C的。。怎么提交都是CE。。

后来一气之下把头文件stdio.h、stdlib.h、string.h改为cstdio、cstdlib、cstring提交为C++,其他均无改动,直接AC。。

之后想想可能是因为我的C不够ANSI。。。。

附AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <cstdio> 
#include <cstdlib>
#include <cstring>
//UVa 401
char revletter(char a){
char table[]="A@@@3@@HIL@JM@O@@@2TUVWXY51SE@Z@@8@";
int xt;
if(a>='A'&&a<='Z'){
xt=a-65;
}else if(a>='1'&&a<='9'){
xt=a-23;
}else{
xt=34;
}
return table[xt];
}
int main(){
char str[200],temp;
int len,i;
int reFlag,miFlag;
int si;
while(scanf("%s",str)!=EOF){
reFlag=miFlag=1;
len=strlen(str);
for(i=0;i<len/2;i++){
if(str[i]!=str[len-1-i]){
reFlag=0;
}
if(str[i]!=revletter(str[len-1-i])){
miFlag=0;
}
}
if(len%2!=0){
temp=str[len/2];
if(temp!=revletter(temp)){
miFlag=0;
}
}
si=reFlag*2+miFlag;
switch(si){
case 0:
printf("%s -- is not a palindrome.nn",str);
break;
case 1:
printf("%s -- is a mirrored string.nn",str);
break;
case 2:
printf("%s -- is a regular palindrome.nn",str);
break;
case 3:
printf("%s -- is a mirrored palindrome.nn",str);
break;
}
}

return 0;

}

java写累了,想换回C来水一题,结果失败了。。。

嗯,反正我今天主要就是想注册UVa,部署我的FeelyBlog,下个Java。。目的都达到了,只是顺手水了几题。。

我还是继续补番去比较好。。