如何用字符压栈和弹栈判断字符串是否是回文字符串
时间: 2023-06-23 22:58:26 浏览: 105
判别读入的字符是否回文-栈和队列
可以使用栈来判断一个字符串是否是回文字符串。主要思路是把字符串的前一半字符压栈,然后再依次弹栈并与字符串的后一半字符比较。如果栈中字符与后一半字符全部相等,则该字符串是回文字符串。
下面是使用C++实现的代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
bool isPalindrome(string str) {
int len = str.length();
stack<char> s;
// 将前一半字符压栈
for (int i = 0; i < len / 2; i++) {
s.push(str[i]);
}
// 判断字符串长度为奇数还是偶数,从而确定比较起点
int start = len % 2 == 0 ? len / 2 : len / 2 + 1;
// 将后一半字符与栈中字符比较
for (int i = start; i < len; i++) {
char c = s.top();
s.pop();
if (c != str[i]) {
return false; // 不是回文字符串
}
}
return true; // 是回文字符串
}
int main() {
string str;
cout << "请输入一个字符串:";
cin >> str;
if (isPalindrome(str)) {
cout << str << "是回文字符串" << endl;
} else {
cout << str << "不是回文字符串" << endl;
}
return 0;
}
```
以上就是使用栈来判断字符串是否是回文字符串的代码。
阅读全文