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.
to see which companies asked this question
1 public class Solution { 2 public boolean isPalindrome(String s) { 3 if(s.trim() == "") return true; 4 int i = 0,j = s.length()-1; 5 char c1,c2; 6 while(i <= j){ 7 c1 = s.charAt(i); 8 c2 = s.charAt(j); 9 if(!Character.isLetterOrDigit(c1)) i++;10 if(!Character.isLetterOrDigit(c2)) j--;11 if(Character.isLetterOrDigit(c1) && Character.isLetterOrDigit(c2)){12 if(Character.toLowerCase(c1) != Character.toLowerCase(c2)) return false;13 i++;14 j--;15 }16 }17 return true;18 }19 }
主要是注意该题中 , . ! 等等不算在回文的序列中。