回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个程序判定给定的字符向量是否为回文,用栈实现。(提示:将一半字符入栈)
输入格式:
输入任意字符串。
输出格式:
若字符串是回文,输出:xxxx是回文。
若字符串不是回文,输出:xxxx不是回文。
输入样例:
abba
输出样例:
abba是回文。
输入样例:
abdba
输出样例:
abdba是回文。
输入样例:
good
输出样例:
good不是回文。
题目说要 用栈实现。(提示:将一半字符入栈) 。
这个方法是刚刚在百度的时候看见的,之前很拒绝stl,可能就是个人比较懒,但是看了用链栈实现回文的时候,才发现STL有多香了。
首先头文件 : #include <stack>
#include <bits/stdc++.h>
#include <stack>
using namespace std;
int main()
{
stack<char>s;
string a;
cin>>a;
for(int i=0;i<a.size();i++)s.push(a[i]);//入栈
string b;
while(!s.empty())
{
b+=s.top();
s.pop();
}
if(a==b)cout<<a<<"是回文。";
else cout<<a<<"不是回文。";
}
s.push():入栈;
s.empty(): 判断栈是否为空;
s.top(): 栈顶端元素值;
s.pop(): 弹出栈顶元素;