LeetCode 140. Word Break II (자바스크립트 솔루션)

4154 단어 algorithmsjavascript

설명:



문자열 s와 문자열 wordDict의 사전이 주어지면 s에 공백을 추가하여 각 단어가 유효한 사전 단어인 문장을 구성합니다. 가능한 모든 문장을 임의의 순서로 반환하십시오.

사전에 있는 동일한 단어는 분할에서 여러 번 재사용될 수 있습니다.

해결책:



시간 복잡도 : O(wordDict.length^s.length)
공간 복잡도: O(s.length)

var wordBreak = function(s, wordDict, memo={}) {
    // Return already solved for sentance
    if(memo[s]!==undefined) return memo[s]
    // Base case of yet unsolved sentance
    if(s.length===0) return ['']

    const output = []

    for(const word of wordDict) {
        if(s.indexOf(word)===0) {
            const suffix = s.slice(word.length)
            // All different sentances to make the suffix
            const suffixWays = wordBreak(suffix, wordDict, memo)
            // Add the word to all the different sentance combinations
            const targetWays = suffixWays.map(way => word + (way.length ? ' ' : '') + way)
            output.push(...targetWays)
        }
    }

    memo[s] = output
    return output
}

좋은 웹페이지 즐겨찾기