Word Break II
HardArrayHash TableStringDynamic ProgrammingBacktrackingTrieMemoization
Solution
export function wordBreak(s: string, wordDict: string[]): string[] {
const map = new Map<string, string[]>([['', ['']]]);
function dfs(s: string): string[] {
if (map.has(s)) {
return map.get(s)!;
}
const result: string[] = [];
for (const word of wordDict) {
if (!s.startsWith(word)) continue;
for (const substr of dfs(s.substring(word.length))) {
result.push(substr.length === 0 ? word : `${word} ${substr}`);
}
}
map.set(s, result);
return result;
}
return dfs(s);
}