leetcode(js)-每日一练之 验证回文串Ⅱ 题库编号680

本文介绍了一种使用JavaScript验证字符串是否为回文串的算法,特别是在允许删除一个字符的情况下。通过双指针法,分别从字符串的开头和结尾向中间遍历,比较字符是否相等,如果发现不匹配,尝试跳过一个字符继续检查是否能形成回文。
摘要由CSDN通过智能技术生成

leetcode(js)-每日一练之 验证回文串Ⅱ

在这里插入图片描述

主要思路:

  1. 首先跟题库编号125 验证回文字符串的思路相同
  2. 在left(++)和right(–)指针行进过程中,若比较后发现不同,给一次机会,把left++与right 比较 或 right-- 与left 比较,如果有一个返回true,则次字符串珍惜了这次机会,是一个回文字符串,否则仍不是回文字符串
  3. 为什么不left-- right++呢 ,因为在每次比较 都要确定左右两边的字符数相同,才符合题意
        var validPalindrome = function(s) {
            function isHui(left, right) {
                while (left < right) {
                    if (s[left] != s[right]) {
                        return false
                    }
                    left++;
                    right--;
                }
                return true;
            }

            let left = 0;
            let right = s.length - 1;
            while (left < right) {
                if (s[left] != s[right]) {
                    return isHui(left + 1, right) || isHui(left,right - 1);
                }
                left++;
                right--;
            }
            return true;
        };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值