题目:原题链接(困难)
标签:动态规划、记忆化递归、深度优先搜索
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N 3 ) O(N^3) O(N3) | O ( N 2 ) O(N^2) O(N2) | 476ms (84.45%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
import functools
class Solution:
def strangePrinter(self, s: str) -> int:
@functools.lru_cache(None)
def dfs(i, j):
if i > j:
return 0
# 单独打印第1个的情况
ans = dfs(i + 1, j) + 1
# 和后面的一起打印第1个的情况
for k in range(i + 1, j + 1):
if s[i] == s[k]:
ans = min(ans, dfs(i, k - 1) + dfs(k + 1, j))
return ans
return dfs(0, len(s) - 1)