判断一个字符串是否为回文C++
时间: 2023-11-21 08:57:04 浏览: 185
以下是C++实现判断字符串是否为回文的代码,其中使用了栈和过滤字符等技术:
```cpp
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
bool isPalindrome(string s) {
stack<char> st;
string filtered;
// 过滤掉非字母和数字的字符
remove_copy_if(s.begin(), s.end(), back_inserter(filtered), [](char c) {
return !isalnum(c);
});
// 将过滤后的字符压入栈中
for (char c : filtered) {
st.push(tolower(c));
}
// 依次弹出栈中的字符,与原字符串比较
for (char c : s) {
if (!isalnum(c)) {
continue;
}
if (tolower(c) != st.top()) {
return false;
}
st.pop();
}
return true;
}
int main() {
string s = "A man, a plan, a canal: Panama";
if (isPalindrome(s)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
阅读全文