美文网首页
二刷680. Valid Palindrome II

二刷680. Valid Palindrome II

作者: greatseniorsde | 来源:发表于2018-02-03 12:28 被阅读0次

这道题用暴力法tle了,注意一下用two pointers先左右遍历原字符串,如果没有需要替换的,直接返回true. 如果遇到左右指针指的字符不相等的情况,则检查删掉左边这个或者删掉右边那个剩下的是不是回文就行。

class Solution {
    public boolean validPalindrome(String s) {
        if (s == null || s.length() == 0){
            return true;
        }    
        int l = 0;
        int r = s.length() - 1;
        while (l <= r){
            if (s.charAt(l) != s.charAt(r)){
                return isPalindrome(s, l+1, r) || isPalindrome(s, l, r - 1);
            } else {
                l++;
                r--;
            }
        }
        return true;
        
    }
    
    private boolean isPalindrome(String s, int l, int r){
        char[] chars = s.toCharArray();
        int i = l;
        int j = r;
        while (i <= j){
            if (chars[i] != chars[j]){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}

相关文章

网友评论

      本文标题:二刷680. Valid Palindrome II

      本文链接:https://www.haomeiwen.com/subject/jmkuzxtx.html