因为给的字符串有空格等符号,所以首先判断拿到的字符是否是有效字符,包括大小写字母和数字。
然后要将字符串中属于字母的大小写统一起来。
begin从前往后拿字符,end从后往前拿字符,拿到有效的字符了就进行比较。
class Solution {
public:
bool isvalidchar(char ch){
if((ch >= '0' && ch <= '9')||
(ch >= 'a' && ch <= 'z')||
(ch >= 'A' && ch <= 'Z')){
return true;
}else{
return false;
}
}
bool isPalindrome(string s) {
for(auto& e : s){
if(e >= 'A' && e <= 'Z'){
e += 32;
}
}
int begin = 0;
int end = s.size()-1;
while(begin < end){
while(begin < end && !(isvalidchar(s[begin]))){
begin++;
}
while(begin < end && !(isvalidchar(s[end]))){
end--;
}
if(s[begin] == s[end]){
begin++;
end--;
}else{
return false;
}
}
return true;
}
};