680. Valid Palindrome II

Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.

Example 1:

Input: "aba"
Output: True

Example 2:

Input: "abca"
Output: True
Explanation: You could delete the character 'c'.

Note:

  1. The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

思路:暴力不过,改为递归,为了减小递归深度,先尽量用循环
class Solution {
    public boolean validPalindrome(String s) {
        char[] cs = s.toCharArray();
        return validPalindrome(cs, 0, cs.length-1, 1);
    }

	private boolean validPalindrome(char[] cs, int i, int j, int cap) {
		if(i<0||j<0||i>=cs.length||j>=cs.length)	return false;
		if(cap == -1)	return false;
		if(i >= j)		return true;
		
		while(i<j && cs[i]==cs[j]) {
			i ++;
			j --;
		}
		if(i >= j)		return true;
		
        return validPalindrome(cs, i+1, j, cap-1) || validPalindrome(cs, i, j-1, cap-1);
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值