-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path[139]单词拆分.java
38 lines (32 loc) · 864 Bytes
/
[139]单词拆分.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Arrays;
import java.util.LinkedList;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
LinkedList<String> track = new LinkedList();
int[] memo;
public boolean wordBreak(String s, List<String> wordDict) {
memo = new int[s.length()];
Arrays.fill(memo, -1);
return backtrack(s, 0, wordDict);
}
boolean backtrack(String s, int i, List<String> wordDict) {
if (i == s.length()) {
return true;
}
if (memo[i] != -1){
return memo[i] == 0 ? false : true;
}
for (int len = 1; i + len <= s.length(); len++) {
String prefix = s.substring(i, i + len);
if (wordDict.contains(prefix)) {
if (backtrack(s, i + len, wordDict) == true) {
memo[i] = 1;
return true;
}
}
}
memo[i] = 0;
return false;
}
}
//leetcode submit region end(Prohibit modification and deletion)