Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
题意:判断一个string句子是否回文。
思路:读懂题意,然后从两端开始检测。
class Solution {
public:
bool isPalindrome(string s) {
int i = 0;
int j = s.size() - 1;
while (i < j){
if (!((s[i] >= 48 && s[i] <= 57) || (s[i] >= 65 && s[i] <= 90) || (s[i] >= 97 && s[i] <= 122))){
i++;
continue;
}
if (!((s[j] >= 48 && s[j] <= 57) || (s[j] >= 65 && s[j] <= 90) || (s[j] >= 97 && s[j] <= 122))){
j--;
continue;
}
if (s[i] == s[j] || (s[i] >= 65 && s[j] >= 65 && (s[i] - s[j] == 32 || s[i] - s[j] == -32))){
i++;
j--;
}
else{
return false;
}
}
return true;
}
};