// 解法:双指针 publicbooleanisPalindrome(String s) { char[] charArray = s.toCharArray(); intleft=0, right = charArray.length - 1; while (left <= right) { while (left < right && !isValidaChar(charArray[left])) { left++; } while (left < right && !isValidaChar(charArray[right])) { right--; } if (!compareChar(charArray[left], charArray[right])) returnfalse; left++; right--; } returntrue; }
privatebooleanisValidaChar(char c) { return (c >= AInt && c <= ZInt) || (c >= aInt && c <= zInt) || (c >= zeroInt && c <= nineInt); }
privatebooleancompareChar(char a, char b) {// a, b都是字母 if (a == b) returntrue; if (a <= ZInt && a >= AInt) { return a + diff == b; } elseif (a >= aInt && a <= zInt) { return a - diff == b; } returnfalse; }
publicstaticvoidmain(String[] args) { _125验证回文串 isPalindrome = new_125验证回文串(); System.out.println(isPalindrome.isPalindrome("0P")); System.out.println(isPalindrome.isPalindrome("aA")); System.out.println(isPalindrome.isPalindrome(" ")); System.out.println(isPalindrome.isPalindrome("race a car")); System.out.println(isPalindrome.isPalindrome("A man, a plan, a canal: Panama")); } }