题目链接: https://leetcode-cn.com/problems/word-break/.
利用dp思想,以tmp_string = "watchdog"为例,如果tmp_string[:5] – watch 和 tmp_string[5:] --"dog"均在dict中,那么tmp_string必然可以被dict分解。
class Solution(object):
def wordBreak(self, s, wordDict):
"""
:type s: str
:type wordDict: List[str]
:rtype: bool
"""
dp = [0] * (len(s) + 1)
dp[0] = 1
for i in range(1, len(dp)): #对于dp[1:i]来说,如果dp[:j] dp[j:i]都在word dict中,我们认为dp[:i]就在dict中,此时把dp[i]置为1
for j in range(i):
if dp[j] == 1 and s[j:i] in wordDict:
dp[i] = 1
break
if dp[-1] == 1:
return True
return False