写一个c++程序,判断字符串是否为回文,要求用栈实现
时间: 2024-11-15 18:23:51 浏览: 46
算法-判断字符串是否为回文(信息学奥赛一本通-T1146)(包含源程序).rar
当然可以。在C++中,我们可以利用栈的数据结构来判断一个字符串是否为回文。回文是指正读反读都一样的字符串,例如"madam"、"racecar"等。以下是使用栈实现的一个简单示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isPalindrome(const std::string &str) {
// 创建一个空栈
std::stack<char> stack;
// 遍历字符串的前半部分,压入栈中
for (int i = 0; i < str.length() / 2; ++i) {
stack.push(str[i]);
}
// 如果字符串长度是奇数,中间字符不需要比较
if (str.length() % 2 == 1) {
i++;
}
// 检查后半部分是否与栈顶元素匹配
for (; i < str.length(); ++i) {
if (str[i] != stack.top()) {
return false;
}
stack.pop();
}
// 如果所有字符都已检查,说明是回文
return true;
}
int main() {
std::string input;
std::cout << "Enter a string: ";
std::cin >> input;
if (isPalindrome(input)) {
std::cout << input << " is a palindrome.\n";
} else {
std::cout << input << " is not a palindrome.\n";
}
return 0;
}
```
阅读全文