所谓回文字符 串就是指正读反读均相同的字符序列,如“aha”和“ahaha”均是回 文,但“ahah”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。
#include <stdio.h>
#include <string.h>
int main() {
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的值为0,则说明栈内所有的字符都被一一匹配了
top--;
}
if(top==0)
printf("YES");
else
printf("NO");
return 0;
}