方法1>.使用栈进行判断,将字符串中的每个字符逐个放入栈中,全部放入之后再出栈,根据栈后进先出的特点,将最先出栈的元素与最先进栈的元素进行比较,如果它们相同则继续比较下去(不同则退出比较,说明不是回文),直到所有元素比较一谝或者最后仅剩一个单独元素未被比较,则说明字符串是回文。
代码如下:
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int is_palindrome(const string palin)
{
stack<char> s;
for (int i = 0;i < palin.size();i++)
{
s.push(palin[i]);
}
int k = 0;
while (s.size() > palin.size()/2)
{
char c = s.top();
s.pop();
if (c != palin[k++])
{
cout << palin << " is not palindrome!" << endl;
return -1;
}
}
cout << palin << " is palindrome!" << endl;
return 0;
}
int main()
{
string str;
while (cin >> str)
is_palindrome(str);
return 0;
}
注意:
STL中 stack<int> s; 和 stack<int,vector<int> > s;的区别:
前者代表用默认的对象类型来实现一个栈(默认类型可以是vector, deque,list,一般推荐是vector、但默认是deque)
后者是要求用vector来创建栈。
使用栈判断字符串是否为回文
本文介绍了一种利用栈的数据结构特性来判断一个字符串是否为回文的方法,并提供了完整的C++代码实现。该方法通过将字符串的字符依次压入栈中,再逐一弹出与原字符对比的方式,实现了高效准确的回文判断。
2868

被折叠的 条评论
为什么被折叠?



