classSolution{publicbooleanisPalindrome(String s){StringBuffer sgood =newStringBuffer();int length = s.length();for(int i =0;i<length;i++){char ch = s.charAt(i);if(Character.isLetterOrDigit(ch)){sgood.append(Character.toLowerCase(ch));}}int head =0,tail = sgood.length()-1;while(head<tail){if(sgood.charAt(head)==sgood.charAt(tail)){head++;tail--;}else{returnfalse;}}returntrue;}}
方法三 直接雙指針
classSolution{publicbooleanisPalindrome(String s){int left =0;int right = s.length()-1;while(left<right){while((left<right)&&(!Character.isLetterOrDigit(s.charAt(left)))){left++;}while((left<right)&&(!Character.isLetterOrDigit(s.charAt(right)))){right--;}if(left<right){if(Character.toLowerCase(s.charAt(left))!=Character.toLowerCase(s.charAt(right))){returnfalse;}else{left++;right--;}}}returntrue;}}