Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example, "A man, a plan, a canal: Panama" is a palindrome. "race a car" is not a palindrome.

Note: Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

Solution

public class Solution {
    public boolean isPalindrome(String s) {
        if (s == null || s.length() <= 1) return true;

        char[] arr = s.toCharArray();
        int start = 0;
        int end = arr.length - 1;

        while (start <= end) {
            while (start <= end && !(Character.isAlphabetic(s.charAt(start)) || Character.isDigit(s.charAt(start)))) {
                start++;
            }

            while (start <= end && !(Character.isAlphabetic(s.charAt(end)) || Character.isDigit(s.charAt(end)))) {
                end--;
            }

            if (start > end) {
                break;
            }

            char startChar = s.charAt(start);
            char endChar = s.charAt(end);
            String staString = String.valueOf(startChar);
            String endString = String.valueOf(endChar);

            if (staString.equalsIgnoreCase(endString)) {
                start++;
                end--;
            } else {
                return false;
            }

        }

        return true;
    }
}

results matching ""

    No results matching ""