LeetCode125. 验证回文串

一、题目描述

二、解法

思路1:双指针。

思路2:reverse后看是否相等。

 

class Solution {
    public boolean isPalindrome(String s) {
        if (s == null) return true;
        /**
         *  方法1:双指针
         */
        char[] chars = s.toLowerCase().toCharArray();
        int l = 0, r = chars.length - 1;
        while (l < r) {
            if (!isType(chars[l])) {
                l ++;
                continue;
            }
            if (!isType(chars[r])) {
                r --;
                continue;
            }
            if (chars[l] != chars[r]) {
                return false;
            }
            l ++;
            r --;
        }
        return true;
        /**
         * 方法2:reverse
         */
        /*
        s = s.toLowerCase();
        StringBuilder sb = new StringBuilder(s.length());
        for (int i = 0; i < s.length(); i++) {
            if (isType(s.charAt(i))) {
                sb.append(s.charAt(i));
            }
        }
        return sb.toString().equals(sb.reverse().toString());
        */
    }
    private boolean isType(char c) {
        return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z');
    }
}

 

posted @ 2020-12-07 10:14  不学无墅_NKer  阅读(62)  评论(0编辑  收藏  举报