描述
给定一个字符串,判断其是否为一个回文串。只考虑字母和数字,忽略大小写。
你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。
在这个题目中,我们将空字符串判定为有效回文。
您在真实的面试中是否遇到过这个题?
是
样例
"A man, a plan, a canal: Panama"
是一个回文。
"race a car"
不是一个回文。
挑战
O(n) 时间复杂度,且不占用额外空间。
注意判断条件。
class Solution {
public:
/**
* @param s: A string
* @return: Whether the string is a valid palindrome
*/
bool isPalindrome(string &s) {
// write your code here
if(s.empty()) return true;
int start=0;
int end=s.length()-1;
while(start<end){
if(!((s[start]-'A'>=0&&s[start]-'A'<26)||(s[start]-'a'>=0&&s[start]-'a'<26)||(s[start]>=48&&s[start]<=57))){
start++;
continue;
}
if(!((s[end]-'A'>=0&&s[end]-'A'<26)||(s[end]-'a'>=0&&s[end]-'a'<26)||(s[end]>=48&&s[end]<=57))){
end--;
continue;
}
if(s[start]==s[end]||s[start]+32==s[end]||s[start]-32==s[end]) {
start++;
end--;
}else return false;
}
return true;
}
};