1# Runtime: 56 ms (Top 49.21%) | Memory: 14 MB (Top 33.37%)2class Solution(object):3def wordBreak(self, s, wordDict):4"""5:type s: str6:type wordDict: List[str]7:rtype: List[str]8"""910dic = defaultdict(list)11for w in wordDict:12dic[w[0]].append(w)13result = []1415def recursion(idx, ans):16if idx >= len(s):17result.append(" ".join(ans))18return1920for w in dic[s[idx]]:21if s[idx : idx + len(w)] == w:22ans.append(w)23recursion(idx + len(w), ans)24ans.pop()2526return2728recursion(0, [])29return result