File tree 1 file changed +49
-0
lines changed
1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string} s
3
+ * @param {string[]} wordDict
4
+ * @return {boolean}
5
+ */
6
+ let wordBreak = function (s, wordDict) {
7
+ let n = s.length
8
+ if (!n) return true
9
+
10
+ let wordSet = new Set(wordDict)
11
+ let dp = []
12
+ dp[0] = true
13
+
14
+ for (let i = 0; i <= n; i++) {
15
+ for (let j = i; j >= 0; j--) {
16
+ let word = s.slice(j, i)
17
+ if (wordSet.has(word) && dp[j]) {
18
+ dp[i] = true
19
+ break
20
+ }
21
+ }
22
+ }
23
+
24
+ return !!dp[n]
25
+ }
26
+ /**
27
+ * @param {string[]} words
28
+ * @return {string}
29
+ */
30
+ let longestWord = function (words) {
31
+ // 先长度降序 后字典序升序 排序
32
+ words.sort((a, b) => {
33
+ let diff = b.length - a.length
34
+ if (diff !== 0) {
35
+ return diff
36
+ } else {
37
+ return a < b ? -1 : 1
38
+ }
39
+ })
40
+ words = Array.from(new Set(words))
41
+ for (let i = 0; i < words.length; i++) {
42
+ let word = words[i]
43
+ let rest = words.slice(0, i).concat(words.slice(i + 1))
44
+ if (wordBreak(word, rest)) {
45
+ return word
46
+ }
47
+ }
48
+ return ""
49
+ }
You can’t perform that action at this time.
0 commit comments