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 public boolean isPalindrome(String s) { 2 if (s.isEmpty()) return true; 3 int begin = 0,end = s.length()-1; 4 while (begin<=end) 5 { 6 Character bchar = s.charAt(begin); 7 Character echar = s.charAt(end); 8 if (!Character.isLetterOrDigit(bchar)) begin++; 9 else if (!Character.isLetterOrDigit(echar)) end--; 10 else if (Character.toLowerCase(bchar) != Character.toLowerCase(echar)) return false; 11 else { 12 begin++;end--; 13 } 14 } 15 return true; 16 }