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.
分析:判断一个字符串是否为回文串,只要判断前后对应位置的字符是否相等即可,在此之前,此题需要做一些处理比如去除非字符数字字符和将字符变为小写等。
class Solution { public: bool isPalindrome(string s) { int n = s.length(); if(n == 0) return true; int left = 0, right = n-1; while(left < right){ if(!isalnum(s[left]))left++; else if(!isalnum(s[right]))right--; else if(tolower(s[left]) != tolower(s[right])) return false; else{ left++; right--; } } return true; } };