7-1 回文判断
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。
输入格式:
输入待判断的字符序列,按回车键结束,字符序列长度<20。
输出格式:
若字符序列是回文,输出“YES”;否则,输出“NO”。
输入样例:
abdba
输出样例:
YES
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
stack<char> c_stack;
int i;
for (i = 0; i < s.size() / 2; i++)
c_stack.push(s[i]);
int start_matching = 0;
if (s.size() % 2 == 0)
start_matching = s.size() / 2;
else
start_matching = s.size() / 2 + 1;
for (i = start_matching; i < s.size(); i++)
{
if (c_stack.top() == s[i])
c_stack.pop();
else if (c_stack.top() != s[i] && !c_stack.empty())
{
cout << "NO";
return 0;
}
}
if (c_stack.empty())
cout << "YES";
else
cout << "NO";
return 0;
}