We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 1384fbf commit 8d49797Copy full SHA for 8d49797
word-break/printjin-gmailcom.py
@@ -1,13 +1,20 @@
1
class Solution:
2
def wordBreak(self, s, wordDict):
3
wordSet = set(wordDict)
4
- dp = [False] * (len(s) + 1)
5
- dp[0] = True
+ memo = {}
6
7
- for i in range(1, len(s) + 1):
8
- for j in range(i):
9
- if dp[j] and s[j:i] in wordSet:
10
- dp[i] = True
11
- break
+ def backtrack(start):
+ if start == len(s):
+ return True
+ if start in memo:
+ return memo[start]
+
12
+ for end in range(start + 1, len(s) + 1):
13
+ if s[start:end] in wordSet and backtrack(end):
14
+ memo[start] = True
15
16
17
+ memo[start] = False
18
+ return False
19
- return dp[len(s)]
20
+ return backtrack(0)
0 commit comments