Description
Given a string s
. In one step you can insert any character at any index of the string.
Return the minimum number of steps to make s
palindrome.
A Palindrome String is one that reads the same backward as well as forward.
Example 1:
Input: s = "zzazz" Output: 0 Explanation: The string "zzazz" is already palindrome we do not need any insertions.
Example 2:
Input: s = "mbadm" Output: 2 Explanation: String can be "mbdadbm" or "mdbabdm".
Example 3:
Input: s = "leetcode" Output: 5 Explanation: Inserting 5 characters the string becomes "leetcodocteel".
Constraints:
1 <= s.length <= 500
s
consists of lowercase English letters.
Solution
Python3
class Solution:
def minInsertions(self, s: str) -> int:
N = len(s)
@cache
def go(i, j):
if i >= j: return 0
if s[i] == s[j]: return go(i + 1, j - 1)
return 1 + min(go(i + 1, j), go(i, j - 1))
return go(0, N - 1)