大部分思路与125题一样,只不过多了一步
const validPalindrome = function (s) {
let left = 0,
right = s.length - 1;
// helper function
function isPalindrome(left, right) {
while (left < right) {
if (s[left] !== s[right]) return false;
left++;
right--;
}
return true;
}
// 比验证回文串多了一步,判断left + 1与right或left与right - 1是否相等
// left + 1 左指针向右跳一格,right - 1右指针向左跳一格,因为最多删除一个元素所以只能跳一格
while (left < right) {
if (s[left] !== s[right]) return isPalindrome(left + 1, right) || isPalindrome(left, right - 1);
left++;
right--;
}
return true;
};
console.log(validPalindrome('ababa'));
console.log(validPalindrome('abca'));
console.log(validPalindrome('abc'));