is Palindrome

判断字符串是否回文

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
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[101],s[101];
int i,len,mid,next,top;

gets(a); //读入一行字符串
len = strlen(a); // 求字符串的长度
mid = len/2 - 1; // 求中点
top = 0; //栈初始化
// mid 之前的字符依次入栈

for(i = 0; i <= mid; i++){
s[++top] = a[i];
}
if(len % 2 == 0){
next = mid + 1;

}else{
next = mid + 2;
}

// 开始匹配

for(i = next;i <= len - 1; i++){
if(a[i] != s[top])
break;
top--;
}

if(top == 0){
printf("YES");
}else{
printf("NO");
}
return 0;
}


参考

  • 《啊哈!算法》
关注我的微信公众号[李一二],即时看更多的文章