1 public class Solution { 2 /** 3 * @param s A string 4 * @return Whether the string is a valid palindrome 5 */ 6 public static boolean isPalindrome(String s) { 7 if (s == null || s.isEmpty()){ 8 return true; 9 } 10 int left = 0; 11 int right = s.length() - 1; 12 while (left < right){ 13 if (!Character.isLetterOrDigit(s.charAt(left))){ 14 ++left; 15 continue; 16 } 17 if (!Character.isLetterOrDigit(s.charAt(right))){ 18 --right; 19 continue; 20 } 21 if (Character.toLowerCase(s.charAt(left)) == Character.toLowerCase(s.charAt(right))){ 22 ++left; 23 --right; 24 } else { 25 return false; 26 } 27 } 28 return true; 29 } 30 }