LeetCode 每日一题 680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ

解题思路:

这道题时改编回文字串的题,直接暴力判断会超时,所以要想办法在线性时间内解决,由于题目限制只能删除一个字符,这个时候我们可以在第一次双指针不匹配的时候选择性删除某一面的字符,两次判断是否为回文字串,如果都不行则返回false,如果删除某一面的字符可以符合要求,就返回true,显然应该使用 || 来判断最后的结果

源代码:
/**
 * @param {string} s
 * @return {boolean}
 */
var judge = function(s){
    var i = 0, j = s.length-1;
        while(i < j){
            if(s[i] != s[j]) return false;
            i++;j--;
        }
    return true;
};


var validPalindrome = function(s) {
        var i = 0, j = s.length - 1;
        var index = 0;
        while(i < j){
            if(index == 0 && s[i] != s[j]){
                break;
            }
            i++;j--;
        }
        var str_tmp = s;
        str_tmp = (s.slice(0,i) + s.slice(i+1, s.length));
        var l = judge(str_tmp);
        str_tmp = (s.slice(0,j) + s.slice(j+1, s.length));
        var r = judge(str_tmp);
        return l || r;
    
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值