任意输入一个字符串,试判断其是否对称。 【基本要求】 要求字符串从键盘上随机输入,并且字符串以链式方式存储,实现时,用c++数据结构栈实现
时间: 2024-11-13 07:25:24 浏览: 22
要判断一个字符串是否对称,也称为回文字符串,你可以通过将字符串的首尾字符依次进行比较,直到中间位置。这里提供一种简单的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) {
// 如果栈顶字符与当前字符不匹配,返回false
if (str[i] != stack.top()) {
return false;
}
// 否则,弹出栈顶字符继续比较
stack.pop();
}
// 如果所有字符都匹配成功,返回true
return true;
}
int main() {
std::string input;
std::cout << "请输入一个字符串:";
getline(std::cin, input);
if (isPalindrome(input)) {
std::cout << "字符串是对称的。\n";
} else {
std::cout << "字符串不是对称的。\n";
}
return 0;
}
```
在这个程序中,用户会提示输入一个字符串,然后`isPalindrome`函数会检查该字符串是否满足对称条件。如果所有字符都一一对应相等,则返回`true`,否则返回`false`。
阅读全文