125. Valid Palindrome
第一份我写的:我先把空白字符去掉。再判断是否位回文字符串。(思维固化了)
但是其实完全可以使用两个下标:一个左边下标,一个右边下标。
class Solution {
public:
bool isPalindrome(string s) {
string change;
for(auto x:s)
if(isalnum(x)){
if(isupper(x))
change+=tolower(x);
else
change+=x;
}
int N=change.size();
for(int i=0;i<N;i++)
if(change[i] != change[N-i-1])
return false;
return true;
}
};
class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(),s.end(),s.begin(),::tolower);
auto left = s.begin(), right = prev(s.end());
while(left < right){
if(!::isalnum(*left)) ++left;
else if(!::isalnum(*right)) --right;
else if(*left !=*right) return false;
else{
left++,right--;
}
}
return true;
}
};