javascript 力扣刷题 680:验证回文字符串II
最编程
2024-06-08 08:00:38
...
var validPalindrome = function(s) {
//双指针解法,首先定首尾。
let left = 0,right = s.length-1
//其次进入到while循环当中。
while(left<right){
//先抓出两边指针不相同的特例
if(s[left] !== s[right]){
//由于本题需要给一次删除元素的机会,我们可以理解为,我们有一次跳过该元素的机会,于是乎我在下方创建了一个函数用于跳过后继续验证。
//关键语句在这一句:两种跳过的方法,用or来return出结果,只要有一个是true,则用掉这次机会之后依旧判断为回文字符串。
const res = oneChance(left+1,right) || oneChance(left,right-1)
return res
}
left++
right--
}
//在指针走到left=right或者left>right还未返回false,则回文串成立。
return true
//下方是给一个机会跳过验证错误的函数,思路与上方基本一致。
function oneChance(left,right){
while(left<right){
if(s[left] !== s[right]){
return false
}
left++
right--
}
return true
}
};
上一篇: 回文字符串