美文网首页
二刷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