180 - 140 单词拆分2
题目
解答
from collections import deque
class Solution:
def wordBreak(self, s: str, wordDict: List[str]) -> List[str]:
if len(s) == 0:
return []
word_set = {word for word in wordDict}
dp = [0 for _ in range(len(s)+1)]
dp[0] = 1
for i in range(1, len(s)+1):
for j in range(i):
if dp[j]and s[j:i] in word_set:
dp[i] = 1
break
res = []
def dfs(s, length, word_set, res, path, dp):
if length == 0:
res.append(" ".join(path))
return
for i in range(length):
if dp[i]:
suffix = s[i:length]
if suffix in word_set:
path.appendleft(suffix)
dfs(s, i, word_set, res, path, dp)
path.popleft()
if dp[-1]:
queue = deque()
dfs(s, len(s), word_set, res, queue, dp)
return resLast updated