判断回文串(栈的应用)
题目描述:
给一字符串,以回车结束。判断是否为回文串。回文串的定义:zyz、y、yy为回文串。
输入样例:
zyz
输出样例:
YES
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char x[100],s[100];
int mid,top=-1,flag=1; //top为指向栈的数据
gets(x);
int len=strlen(x);
mid=len/2-1; //找出字符串中间的下标
for(int i=0;i<=mid;i++)
s[++top]=x[i]; //将字符串前半部分输到栈中
if(len%2==0) //如果为偶数,则从下一位开始判断
mid+=1;
else //如果是奇数则从中间那位字符的下一位为开始判断
mid+=2;
for(int i=mid;i<len;i++)
{
if(s[top]!=x[i])
{ //判断字符串的左右是否相等
flag=0;
break;
}
top--;
}
if(flag==1)
printf("YES");
else
printf("NO");
return 0;
}