8.28 - hard - 118

664. Strange Printer

记忆化搜索,感觉有时候能想到DP基本上就算是胜利了。

class Solution(object):
    def strangePrinter(self, S):
        """
        :type s: str
        :rtype: int
        """
        memo = {}
        def dp(i, j):
            if i > j: return 0
            if (i, j) not in memo:
                ans = dp(i+1, j) + 1
                for k in xrange(i+1, j+1):
                    if S[k] == S[i]:
                        ans = min(ans, dp(i, k-1) + dp(k+1, j))
                memo[i, j] = ans
            return memo[i, j]

        return dp(0, len(S) - 1)

你可能感兴趣的:(8.28 - hard - 118)