题目描述:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
判断字符串是否为回文字符串,不考虑大小写和空格。直接从字符串首尾两个指针分别向中间移动,忽略空格和大小写即可。
class Solution {
public:
bool isPalindrome(string s) {
int i=0;
int j=s.size()-1;
while(i<=j)
{
while(!isAlphanumeric(s[i])&&i<j) i++;
while(!isAlphanumeric(s[j])&&i<j) j--;
if(toupper(s[i])!=toupper(s[j])) return false;
else
{
i++;
j--;
}
}
return true;
}
bool isAlphanumeric(char x)
{
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')) return true;
else if(x>='0'&&x<='9') return true;
else return false;
}
};