回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个程序判定给定的字符向量是否为回文,用栈实现。(提示:将一半字符入栈)c++
时间: 2024-10-16 08:20:53 浏览: 53
在 C++ 中,我们可以使用栈来检查一个字符串是否是回文。以下是使用栈的一个简单示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isPalindrome(std::string str) {
// 使用栈存储前半部分字符
std::stack<char> stack;
int start = 0; // 字符串开始位置
// 遍历字符串的一半并将字符压入栈中
for (int i = 0; i < str.size() / 2; ++i) {
stack.push(str[start]);
start++;
}
// 检查另一半是否与栈顶元素匹配
for (int i = str.size() / 2; i < str.size(); ++i) {
if (str[i] != stack.top()) {
return false; // 匹配失败,不是回文
}
stack.pop();
}
// 如果整个过程都没有返回 false,则字符串是回文
return true;
}
int main() {
std::string test1 = "abba";
std::string test2 = "abdba";
std::string test3 = "good";
std::cout << (isPalindrome(test1) ? "是回文" : "不是回文") << "\n"; // 输出:是回文
std::cout << (isPalindrome(test2) ? "是回文" : "不是回文") << "\n"; // 输出:是回文
std::cout << (isPalindrome(test3) ? "是回文" : "不是回文") << "\n"; // 输出:不是回文
return 0;
}
```
阅读全文