Skip to content

Commit 4350260

Browse files
authored
word break solution with pruning
1 parent 37aa074 commit 4350260

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

word-break/yhkee0404.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ object Solution {
22
def wordBreak(s: String, wordDict: List[String]): Boolean = {
33
val dp = Array.fill(s.length + 1)(false) // S(s, wordDict, word) = O(s.length)
44
dp(0) = true
5-
for (i <- 1 to s.length) {
6-
for (word <- wordDict) {
7-
if (i >= word.length && dp(i - word.length) && s.substring(i - word.length, i) == word) {
8-
dp(i) = true // T(s, wordDict, word) = O(s.length * wordDict.length * word.length)
5+
(0 to s.length - 1).exists { i =>
6+
if (! dp(i)) false
7+
else {
8+
for (word <- wordDict if ! dp(s.length)) {
9+
val j = i + word.length
10+
if (j <= s.length && ! dp(j) && s.substring(i, j) == word) {
11+
dp(j) = true // T(s, wordDict, word) = O(s.length * wordDict.length * word.length)
12+
}
913
}
14+
dp(s.length)
1015
}
1116
}
12-
dp(s.length)
1317
}
1418
}

0 commit comments

Comments
 (0)