标题: | 回文串 |
||||
标签: | 数据结构 栈 | ||||
详情: | “xyzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“aha”和“ahaha”均是回文,但“ahah”不是回文。输入一行字符(仅包含小写英文字母a~z)请判断这行字符串是否为回文。 |
||||
输入格式: | 只有一行,仅包含小写英文字母a~z的字符串,长度小于等于100。 |
||||
输出格式: | 只有一行,如果是回文请输出YES,不是回文则输出NO,请注意大小写。 |
||||
样例: |
|
如果一个字符串是回文的话,从中间劈开两边是对称的,我们把中间那个数之前的全部入栈,判断中间之后的字符是否一一匹配即可。记得要分为偶数和奇数两种情况。这里一个字符也算是回文。
AC代码:
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main()
{
stack<char>s;
char a[101];
scanf("%s",a);
int n=strlen(a);
int mid=n/2;
for(int i=0;i<mid;i++)//字符串下标从零开始
s.push(a[i]);
int next;
if(n%2==0)
next=mid;
else
next=mid+1;
for(int i=next;i<n;i++)
{
if(a[i]==s.top())
s.pop();
else
s.push(a[i]);
}
if(s.size())
printf("NO\n");
else
printf("YES\n");
return 0;
}