1000. 合并石头的最低成本
1312. 让字符串成为回文串的最少插入次数
class Solution:
def minInsertions(self, s: str) -> int:
n = len(s)
# dp[i][j] 表示对于字符串 s 的子串 s[i:j](这里的下标从 0 开始,并且 s[i:j] 包含 s 中的第 i 和第 j 个字符),
# 最少添加的字符数量,使得 s[i:j] 变为回文串
dp = [[0] * n for _ in range(n)]
for span in range(2, n + 1):
for i in range(n - span + 1):
j = i + span - 1
dp[i][j] = min(dp[i + 1][j], dp[i][j - 1]) + 1
if s[i] == s[j]:
dp[i][j] = min(dp[i][j], dp[i + 1][j - 1])
return dp[0][n - 1]