12013 回文串

标题:

回文串

标签: 数据结构 
详情:

“xyzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“aha”和“ahaha”均是回文,但“ahah”不是回文。输入一行字符(仅包含小写英文字母a~z)请判断这行字符串是否为回文。

输入格式:
只有一行,仅包含小写英文字母a~z的字符串,长度小于等于100。
输出格式:
只有一行,如果是回文请输出YES,不是回文则输出NO,请注意大小写。
样例:

输入

ahah

输出

NO

输入

ahaha

输出

YES

如果一个字符串是回文的话,从中间劈开两边是对称的,我们把中间那个数之前的全部入栈,判断中间之后的字符是否一一匹配即可。记得要分为偶数和奇数两种情况。这里一个字符也算是回文。

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;
} 

                                                                

猜你喜欢

转载自blog.csdn.net/qq_42217376/article/details/81409778