My answer: Better solution would be using 2 pointers, 1 at front, 1 at end, and skip the invalid characters, but logic is similar as the 2nd while loop.
class Solution { public boolean isPalindrome(String s) { if (s == null || s.length() < 2) { return true; } LinkedList<Character> validStr = new LinkedList<Character>(); for (int i = 0; i < s.length(); i++) { Character lowerOne = Character.toLowerCase(s.charAt(i)); if ((lowerOne >= 'a' && lowerOne <= 'z') || (lowerOne >= '0' && lowerOne <= '9')) { validStr.add(lowerOne); } } while (validStr.size() > 1) { if (!validStr.removeFirst().equals(validStr.removeLast()) ) { return false; } } return true; } }
No comments:
Post a Comment