class Solution:
def validPalindrome(self, s: str) -> bool:
def isValidPalindrome(left, right, modified):
while left <= right:
if s[left] != s[right]:
if modified:
return False
else:
return isValidPalindrome(left + 1, right, True) or isValidPalindrome(left, right - 1, True)
left += 1
right -= 1
return True
return isValidPalindrome(0, len(s) - 1, False)
其實這個布林值也可用一個計數器來代替,去計算我們最多可以修改 k 個值。
class Solution:
def validPalindrome(self, s: str) -> bool:
def isValidPalindrome(left, right, k):
while left <= right:
if s[left] != s[right]:
if k <= 0:
return False
else:
return isValidPalindrome(left + 1, right, k - 1) or isValidPalindrome(left, right - 1, k - 1)
left += 1
right -= 1
return True
return isValidPalindrome(0, len(s) - 1, 1)