public static boolean isPalindrome(String s) {
        if(s.trim().isEmpty()) return true;
        int low = 0, high = s.length() - 1;
        s = s.toLowerCase();
        while(low < high){
            Character lowChar = s.charAt(low);
            Character highChar = s.charAt(high);
            if(!Character.isLetterOrDigit(lowChar)){
                low++;
                continue;
            }
            if(!Character.isLetterOrDigit(highChar)){
                high--;
                continue;
            }
            if(!highChar.equals(lowChar)) return false;
            low++;
            high--;
        }
        return true;
    }