LeetCode第680题:验证回文字符2(简单)

LeetCode第680题:验证回文字符2(简单)

  • 题目:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
    LeetCode第680题:验证回文字符2(简单)_第1张图片
  • 解题思路:双指针的做法
class Solution {
    public boolean validPalindrome(String s) {
        int left = 0;
        int right = s.length()-1;
        int time = 1;
        while(left < right){
            if(s.charAt(left)==s.charAt(right)){
                left++;
                right--;
            }else{
                if(left + 1 == right) return true;
                if(time == 1){
                    if(s.charAt(left+1)==s.charAt(right) && s.charAt(left+2)==s.charAt(right-1)){
                        left++;
                        time--;
                    }else if(s.charAt(left)==s.charAt(right-1) && s.charAt(left+1)==s.charAt(right-2)){
                        right--;
                        time--;
                    }else{
                        return false;
                    } 
                }else{
                    return false;
                }
                
            }
        }
        return true;
    }
}

LeetCode第680题:验证回文字符2(简单)_第2张图片

  • 题解做法:思想差不多,代码很简洁。
public boolean validPalindrome(String s) {
    for(int i = 0, j = s.length()-1; i < j ; i++, j--){
        if(s.charAt(i) != s.charAt(j)){
            //分两种情况,一是右边减一,二是左边加一
            return isPalindrome(s,i,j-1) || isPalindrome(s, i+1, j);
        }
    }
    return true;
}

public boolean isPalindrome(String s, int i, int j) {
    while (i < j) {
        if (s.charAt(i++) != s.charAt(j--)) {
            return false;
        }
    }
    return true;
}

作者:cui-dan
链接:https://leetcode-cn.com/problems/valid-palindrome-ii/solution/javashuang-zhi-zhen-jian-dan-yi-dong-by-cui-dan/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

LeetCode第680题:验证回文字符2(简单)_第3张图片

你可能感兴趣的:(学生)