Go•valid-palindrome-ii/solution.go
package main
func validPalindrome(s string) bool {
isPalindrome := func(left int, right int) bool {
for left < right {
if s[left] != s[right] {
return false
}
left++
right--
}
return true
}
left, right := 0, len(s)-1
for left < right {
if s[left] != s[right] {
return isPalindrome(left+1, right) || isPalindrome(left, right-1)
}
left++
right--
}
return true
}
Python•valid-palindrome-ii/solution.py
class Solution:
def validPalindrome(self, s: str) -> bool:
def is_palindrome(left: int, right: int) -> bool:
while left < right:
if s[left] != s[right]: return False
left, right = left + class="syntax-number">1, right - class="syntax-number">1
return True
left, right = class="syntax-number">0, len(s) - class="syntax-number">1
while left < right:
if s[left] != s[right]:
return is_palindrome(left + class="syntax-number">1, right) or is_palindrome(left, right - class="syntax-number">1)
left, right = left + class="syntax-number">1, right - class="syntax-number">1
return True
TypeScript•valid-palindrome-ii/solution.ts
function validPalindrome(s: string): boolean {
const isPalindrome = (left: number, right: number): boolean => {
while (left < right) { if (s[left] !== s[right]) return false; left += class="syntax-number">1; right -= class="syntax-number">1; }
return true;
};
let left = class="syntax-number">0;
let right = s.length - class="syntax-number">1;
while (left < right) {
if (s[left] !== s[right]) return isPalindrome(left + class="syntax-number">1, right) || isPalindrome(left, right - class="syntax-number">1);
left += class="syntax-number">1; right -= class="syntax-number">1;
}
return true;
}