题目链接
题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
方法一:筛选+判断
方法二:在原字符串上直接判断
判断的方法有两种:
(1)使用库函数
(2)双指针
本文先只展示方法一+(1)
(C++代码)
class Solution {
public:
bool isPalindrome(string s) {
string sgood;
for(char ch: s){
if(isalnum(ch)){ //isalnum判断字符变量c是否为字母或数字,若是则返回非零,否则返回零。
sgood += tolower(ch); //tolower把字母字符转换成小写,非字母字符不做出处理。
}
}
string sgood_rev(sgood.rbegin(), sgood.rend());
return sgood_rev == sgood;
}
};
时间复杂度:O(|s|),空间复杂度:O(|s|),其中 |s| 是字符串 s 的长度。



