Skip to main content

664. Strange Printer

Python

2 Dimension DP

class Solution:
def strangePrinter(self, s: str) -> int:
if not s:
return 0

n = len(s)

dp = [[0]*n for _ in range(n)]
for i in range(n):
dp[i][i] = 1

for i in range(n-1, -1, -1):
for j in range(i+1, n):
if s[i] == s[j]:
dp[i][j] = dp[i][j-1]
continue
dp[i][j] = min(
dp[i][cur] + dp[cur+1][j]
for cur in range(i, j)
)

return dp[0][n-1]