Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
文字列を与える s
そして文字列の辞書 単語辞書
、スペースを追加します s
各単語が有効な辞書単語である文を構築するには、そのような考えられるすべての文を返します。 任意の注文.
注記 辞書内の同じ単語がセグメンテーションで複数回再利用される可能性があること。
例 1:
入力: s = "猫と犬", wordDict = ["猫","猫","そして","砂","犬"] 出力: 【「猫と犬」「猫砂犬」】
例 2:
入力: s = "パイナップルペナップル", wordDict = ["アップル","ペン","アップルペン","パイン","パイナップル"] 出力: [「パインアップルペンアップル」、「パイナップルペンアップル」、「パインアップルペンアップル」] 説明: 辞書の単語を再利用できることに注意してください。
例 3:
入力: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"] 出力: []
制約:
1 <= s.length <= 20
1 <= wordDict.length <= 1000
1 <= wordDict[i].length <= 10
s
そしてwordDict[i]
小文字の英字のみで構成されています。- のすべての文字列
単語辞書
は 個性的. - 入力は、回答の長さが 10 を超えないように生成されます。5.
パイソン
# 時間計算量: O(2^n) # 空間計算量: import List クラスの入力による O(2^n) 解決策: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: word_set = set(wordDict) memoization = {} return self._dfs(s, word_set, memoization) def _dfs(self, RemainingStr: str, wordSet: set, memoization: dict) -> List[str]: メモ化に残っているStrの場合: missingStr でない場合は、memoization[remainingStr] を返します。 range(1, len(remainingStr) + 1) 内の i の場合、[""] 結果 = [] を返します。wordSet 内の currentWord の場合、currentWord = RemainingStr[:i] を返します。 _dfs(remainingStr[i:], wordSet, memoization): results.append( currentWord + (" " if nextWord else "") + nextWord) memoization[remainingStr] = 結果は結果を返します s = "catsanddog" wordDict = ["cat" 、「猫」、「と」、「砂」、「犬」] print(Solution().wordBreak(s, wordDict))