【双指针】LeetCode 680. 验证回文串 II

题目链接

680. 验证回文串 II

思路

题目允许删除一个字符,那么当我们判断到一对字符不相等时,可以分别判断区间 \([left + 1, right]\) 和区间 \([left, right - 1]\) 是否能构成回文串,只要有一个能构成回文串,则合法。

代码

class Solution {
    public boolean validPalindrome(String s) {
        int left = 0;
        int right = s.length() - 1;
        boolean chance = true;

        while(left < right){
            if(s.charAt(left) != s.charAt(right)){
                return validSubPalindrome(s, left + 1, right) || validSubPalindrome(s, left, right - 1);
            }
            
            left++;
            right--;
        }

        return true;
    }

    public boolean validSubPalindrome(String s, int left, int right){
        while(left < right){
            if(s.charAt(left) != s.charAt(right)){
                return false;
            }

            left++;
            right--;
        }

        return true;
    }
}
posted @ 2023-01-27 19:13  Frodo1124  阅读(28)  评论(0编辑  收藏  举报