public boolean isPalindrome2(String s) {
        if (s == null) return true;
        s = s.trim().toLowerCase();
        int i = 0, j = s.length() - 1;
        while (i < j) {
            while (i < j && !isAlnum(s.charAt(i))) ++i;
            while (i < j && !isAlnum(s.charAt(j))) --j;
            if (i == j) return true;
            if (s.charAt(i++) != s.charAt(j--)) return false;
        }
        return true;
    }