数据结构利用栈完成回文字符串判定C++代码
时间: 2024-11-20 21:36:00 浏览: 20
在C++中,我们可以使用栈(Stack)数据结构来判断一个字符串是否是回文,因为栈可以帮助我们逐个检查字符并忽略空格。以下是使用栈的一个简单示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isPalindrome(const std::string& s) {
// 使用标准库中的stack容器,并将其初始化为空
std::stack<char> charStack;
// 清除输入字符串中的非字母数字字符并将它们压入栈
for (char c : s) {
if (std::isalnum(c)) {
charStack.push(c);
}
}
// 比较原始字符串和反转后的栈顶元素
int start = 0, end = charStack.size() - 1;
while (start < end) {
if (charStack.top() != s[start]) {
return false;
}
charStack.pop();
start++;
}
// 如果所有的字符都匹配,那么它就是回文
return true;
}
int main() {
std::string str1 = "A man, a plan, a canal: Panama";
std::string str2 = "race a car";
std::cout << (isPalindrome(str1) ? "Yes, " : "No, ") << str1 << " is a palindrome.\n";
std::cout << (isPalindrome(str2) ? "Yes, " : "No, ") << str2 << " is a palindrome.\n";
return 0;
}
```
在这个代码中,我们首先创建一个空的字符栈,然后遍历输入字符串,只保留字母和数字字符并压入栈。接着,我们将栈顶元素与原始字符串的对应位置进行比较。如果所有字符都匹配,则字符串是回文。
阅读全文