Skip to content

Commit f16f039

Browse files
refactor 139
1 parent 04da4df commit f16f039

File tree

2 files changed

+93
-23
lines changed

2 files changed

+93
-23
lines changed

src/main/java/com/fishercoder/solutions/_139.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
11
package com.fishercoder.solutions;
22

3+
import java.util.HashSet;
34
import java.util.List;
5+
import java.util.Set;
46

57
public class _139 {
68

79
public static class Solution1 {
10+
public boolean wordBreak(String s, List<String> wordDict) {
11+
return wordBreak(s, new HashSet(wordDict), 0);
12+
}
13+
14+
public boolean wordBreak(String s, Set<String> wordDict, int start) {
15+
if (start == s.length()) {
16+
return true;
17+
}
18+
for (int end = start + 1; end <= s.length(); end++) {
19+
if (wordDict.contains(s.substring(start, end)) && wordBreak(s, wordDict, end)) {
20+
return true;
21+
}
22+
}
23+
return false;
24+
}
25+
}
26+
27+
public static class Solution2 {
828
/**
929
* this beats 70.46% submission.
1030
*/
@@ -24,7 +44,7 @@ public boolean wordBreak(String s, List<String> wordDict) {
2444
}
2545
}
2646

27-
public static class Solution2 {
47+
public static class Solution3 {
2848
/**
2949
* Added pruning.
3050
* this beats 89.91% submissions.
@@ -53,7 +73,7 @@ public boolean wordBreak(String s, List<String> wordDict) {
5373
}
5474
}
5575

56-
public static class Solution3 {
76+
public static class Solution4 {
5777
/**
5878
* Added pruning, plus start from the end to check.
5979
* This beats 95.20% submissions.

src/test/java/com/fishercoder/_139Test.java

Lines changed: 71 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,75 @@
1111
import static junit.framework.Assert.assertEquals;
1212

1313
public class _139Test {
14-
private static _139.Solution1 solution1;
15-
private static _139.Solution2 solution2;
16-
private static _139.Solution3 solution3;
17-
private static String s;
18-
private static List<String> wordDict;
19-
20-
@BeforeClass
21-
public static void setup() {
22-
solution1 = new _139.Solution1();
23-
solution2 = new _139.Solution2();
24-
solution3 = new _139.Solution3();
25-
}
26-
27-
@Test
28-
public void test1() {
29-
s = "leetcode";
30-
wordDict = new ArrayList<>(Arrays.asList("leet", "code"));
31-
assertEquals(true, solution1.wordBreak(s, wordDict));
32-
assertEquals(true, solution2.wordBreak(s, wordDict));
33-
assertEquals(true, solution3.wordBreak(s, wordDict));
34-
}
14+
private static _139.Solution1 solution1;
15+
private static _139.Solution2 solution2;
16+
private static _139.Solution3 solution3;
17+
private static _139.Solution4 solution4;
18+
private static String s;
19+
private static List<String> wordDict;
20+
21+
@BeforeClass
22+
public static void setup() {
23+
solution1 = new _139.Solution1();
24+
solution2 = new _139.Solution2();
25+
solution3 = new _139.Solution3();
26+
solution4 = new _139.Solution4();
27+
}
28+
29+
@Test
30+
public void test1() {
31+
s = "leetcode";
32+
wordDict = new ArrayList<>(Arrays.asList("leet", "code"));
33+
assertEquals(true, solution1.wordBreak(s, wordDict));
34+
}
35+
36+
@Test
37+
public void test2() {
38+
s = "leetcode";
39+
wordDict = new ArrayList<>(Arrays.asList("leet", "code"));
40+
assertEquals(true, solution2.wordBreak(s, wordDict));
41+
}
42+
43+
@Test
44+
public void test3() {
45+
s = "leetcode";
46+
wordDict = new ArrayList<>(Arrays.asList("leet", "code"));
47+
assertEquals(true, solution3.wordBreak(s, wordDict));
48+
}
49+
50+
@Test
51+
public void test4() {
52+
s = "leetcode";
53+
wordDict = new ArrayList<>(Arrays.asList("leet", "code"));
54+
assertEquals(true, solution4.wordBreak(s, wordDict));
55+
}
56+
57+
@Test
58+
public void test5() {
59+
s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
60+
wordDict = new ArrayList<>(Arrays.asList("a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaaaaaa", "aaaaaaaaaa"));
61+
assertEquals(true, solution1.wordBreak(s, wordDict));
62+
}
63+
64+
@Test
65+
public void test6() {
66+
s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
67+
wordDict = new ArrayList<>(Arrays.asList("a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaaaaaa", "aaaaaaaaaa"));
68+
assertEquals(true, solution2.wordBreak(s, wordDict));
69+
}
70+
71+
@Test
72+
public void test7() {
73+
s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
74+
wordDict = new ArrayList<>(Arrays.asList("a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaaaaaa", "aaaaaaaaaa"));
75+
assertEquals(true, solution3.wordBreak(s, wordDict));
76+
}
77+
78+
@Test
79+
public void test8() {
80+
s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
81+
wordDict = new ArrayList<>(Arrays.asList("a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaaaaaa", "aaaaaaaaaa"));
82+
assertEquals(true, solution4.wordBreak(s, wordDict));
83+
}
84+
3585
}

0 commit comments

Comments
 (0)