基于栈stack数据结构判断字符串是否为回文串c++代码
时间: 2024-09-26 17:12:34 浏览: 70
C++实现判断字符串是否回文实例解析
在C++中,我们可以使用栈的数据结构来判断一个字符串是否为回文串。回文串是指正读反读都一样的字符串。以下是基于栈实现的一种简单方法:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isPalindrome(std::string str) {
std::stack<char> stack;
// 将字符串的一半字符压入栈中
for (size_t i = 0; i < str.length() / 2; ++i) {
stack.push(str[i]);
}
// 检查另一半字符是否与栈顶元素匹配
for (size_t i = str.length() / 2; i < str.length(); ++i) {
if (str[i] != stack.top()) {
return false; // 匹配失败,不是回文
}
stack.pop();
}
// 如果能完全匹配,则是回文
return stack.empty();
}
int main() {
std::string test_str = "radar";
if (isPalindrome(test_str)) {
std::cout << test_str << " is a palindrome.\n";
} else {
std::cout << test_str << " is not a palindrome.\n";
}
return 0;
}
```
在这个代码中,我们首先将字符串前半部分的字符依次压入栈中,然后逐个检查后半部分的字符是否与栈顶元素相等。如果所有字符都能对应匹配,则该字符串是回文。
阅读全文