力扣(LeetCode)验证回文字符串II 个人题解

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

示例 1:

输入: "aba"
输出: True

示例 2:

输入: "abca"
输出: True
解释: 你可以删除c字符。

注意:

  1. 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。

 

使用双指针,用指针移动模拟删除一个字符,具体实现如下所示

代码如下:

复制代码
class Solution {
    public boolean validPalindrome(String s) {
        int left = 0;
        int right = s.length() - 1;
        
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return isPalindrome(s,left+1,right)||isPalindrome(s,left,right-1);
            }
            left++;
            right--;
        }
        return true;
    }
    
    boolean isPalindrome(String s,int l,int r) {
        while(l<r)
        {
            if(s.charAt(l) != s.charAt(r))
                return false;
            l++;
            r--;
        }
        return true;
    }
}
复制代码

 

posted @   AXiangCoding  阅读(368)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示