MarcusV(南墙大佬的搬运工)

南墙大佬的CSDN博客地址

导航

Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)

680. 验证回文字符串 Ⅱ

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

示例 1:

输入: “aba”
输出: True
示例 2:

输入: “abca”
输出: True
解释: 你可以删除c字符。
注意:

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

PS:
我只允许有一次跳过,终止条件加上了wrongCount 》=2

class Solution {
       public boolean validPalindrome(String s) {
        if( s == null || s.isEmpty()) {
        	return true;
        }
        
        return validPalindrome(s, 0, s.length()-1, 0);
    }
	
	public boolean validPalindrome(String s, int left, int right, int wrongCount) {
		if( wrongCount >= 2) {
	    	return false;
	    }
        while( left < right) {
        	if( s.charAt(left) == s.charAt(right)) {
        		left++;
        		right--;
        	}else {
        		return validPalindrome(s, left, right-1, wrongCount+1)
        				|| validPalindrome(s, left + 1, right, wrongCount + 1);
        	} 
        }
        return true;
    }
}

posted on 2020-04-04 17:13  MarcusV  阅读(20)  评论(0编辑  收藏  举报