非空の文字列を考える の と辞書 wordDict 場合、空でない単語のリストを含む、決定 sが 一個の以上の辞書の単語をスペースで区切ったシーケンスに分割することができます。
注意:
- 辞書内の同じ単語は、セグメンテーションに複数回再利用することができます。
- あなたは辞書が重複した単語が含まれていない仮定することができます。
例1:
入力:S = "leetcode"、wordDict = [ "すご腕"、 "コード"] 出力:真の 説明:ので、trueを返します"leetcode"
ようにセグメント化することができます"leet code"
。
例2:
入力:S = "applepenapple"、wordDict = [ "りんご"、 "ペン"] 出力:真の 説明:ので、trueを返します"
applepenappleを"
としてセグメント化することができ"
リンゴペンリンゴ"
。 あなたは辞書の単語を再利用することが許可されていることに注意してください。
例3:
入力:S = "catsandog"、wordDict = [ "猫"、 "犬"、 "砂"、 "および"、 "猫"] 出力:偽
時間:O(N ^ 3)
スペース:O(N)
1 クラスのソリューション: 2 DEF wordBreak(自己、S:STR、wordDict:リスト[STR]) - > BOOL: 3 can_break = [FALSE] *(LEN(S)+ 1 ) 4 5 用 I における範囲(1、LEN (S)+ 1 ): 6 もし S [:I] でwordDict: 7 can_break [I] = 真 8 続ける 9の ための J での範囲(1 、I): 10 もし can_break [J] と S [J:I] 中wordDict: 11 can_break [I] = Trueの 12 休憩 13 戻りcan_break [LEN(S)] 14