[LC] 139ワードブレイク

非空の文字列を考える   と辞書  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                 

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/11669374.html