Skip to content

Commit 87d3fde

Browse files
authored
Update 472-concatenated-words.js
1 parent c7798ef commit 87d3fde

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

472-concatenated-words.js

+37
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
/**
2+
* @param {string[]} words
3+
* @return {string[]}
4+
*/
5+
6+
const findAllConcatenatedWordsInADict = function (words) {
7+
const set = new Set(words)
8+
const res = []
9+
const map = new Map()
10+
for (let w of words) {
11+
if (w.length < 2) continue
12+
if (dfs(w, set, map, 0)) res.push(w)
13+
}
14+
return res
15+
16+
function dfs(word, set, map, pos) {
17+
if (pos > 0 && map.get(word)) return map.get(word)
18+
if (pos > 0 && set.has(word)) {
19+
map.set(word, true)
20+
return map.get(word)
21+
}
22+
for (let i = 1; i < word.length; i++) {
23+
const left = word.slice(0, i)
24+
const right = word.slice(i)
25+
if (set.has(right) && dfs(left, set, map, pos + 1)) {
26+
map.set(word, true)
27+
return map.get(word)
28+
}
29+
}
30+
31+
map.set(word, false)
32+
return false
33+
}
34+
}
35+
36+
// another
37+
138
/**
239
* @param {string[]} words
340
* @return {string[]}

0 commit comments

Comments
 (0)