Hard
LABValid Palindrome III
Return true if s can become a palindrome after deleting at most k characters.
EXAMPLES
Example 1
Input
{
"s": "abcdeca",
"k": 2
}
Output
trueFUNCTION SHAPE
s: stringk: int→boolSOLUTION NOTE
Think in reverse: if we can remove k chars, remaining chars form a palindromic subsequence. Check if LPS length >= n-k.
Reveal reference solution +
pythonREFERENCE
def isValidPalindrome(self, s: str, k: int) -> bool:
@cache
def dp(i, j):
if i >= j: return i == j
if s[i] == s[j]:
return 2 + dp(i + 1, j - 1)
return max(dp(i + 1, j), dp(i, j - 1))
return dp(0, len(s) - 1) >= len(s) - kTime
O(n²)Space
O(n²)