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.
字符串为空时判断为回文,大小写不区分可确定相等,数字与字母不同。
1 class Solution { 2 public: 3 bool isPalindrome(string s) { 4 int n=s.length(); 5 if(n==0) return true; 6 int i=0,j=n-1; 7 while(i='0'&&s[i]<='9')?s[i]-'0':((s[i]>='a'&&s[i]<='z')?s[i]-'a':s[i]-'A');19 right=(s[j]>='0'&&s[j]<='9')?s[j]-'0':((s[j]>='a'&&s[j]<='z')?s[j]-'a':s[j]-'A');20 leftsig=(s[i]>='0'&&s[i]<='9')?0:1;21 rightsig=(s[j]>='0'&&s[j]<='9')?0:1;22 if(left!=right||leftsig!=rightsig)23 return false;24 i++;25 j--;26 }27 return true;28 }29 bool isCharacters(char c){30 if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))31 return true;32 else33 return false;34 }35 };