Monday, January 29, 2018

[2018-Interview] Valid Palindrome

Original question: https://leetcode.com/problems/valid-palindrome/description/


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