日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【leetcode】Word Break(python)

發(fā)布時(shí)間:2025/3/15 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【leetcode】Word Break(python) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

思路是這種。我們從第一個(gè)字符開始向后依次找,直到找到一個(gè)斷句的地方,使得當(dāng)前獲得的子串在dict中,若找到最后都沒找到。那么就是False了。

在找到第一個(gè)后,接下來找下一個(gè)斷句處,當(dāng)然是從第一個(gè)斷句處的下一個(gè)字符開始找連續(xù)的子串,可是這時(shí)與第一個(gè)就稍有不同。比方說word=‘a(chǎn)b’, dict={ 'a', ab', ...},在找到a后,接下來處理的是b。我們發(fā)現(xiàn)b不在dict中,可是我們發(fā)現(xiàn)b能夠和a結(jié)合,形成ab,而ab在dict中。所以這里的每一個(gè)子串就能夠有三種選擇。要么自己單獨(dú)作為個(gè)體到dict中找,要么就跟前面的結(jié)合起來進(jìn)行找。要么就是等,等后面的新的字符。構(gòu)成更長的子串。

可是還有問題,上面我們說的是跟前面的結(jié)合起來找。那么這個(gè)前面是個(gè)什么定義?開頭?開頭后的第一個(gè)? 第二個(gè)?所以我們要記錄一些信息。來表示前面的子串,是從哪里斷開,從而滿足條件的。那么我們就能夠依次與離當(dāng)前子串近的部分進(jìn)行結(jié)合。比方:word = ’aab‘, dict = { a, aab }。處理a時(shí)。是滿足的,下一個(gè)a。也是滿足的,處理 b 時(shí),b不在dict中,那么就與前面的a結(jié)合, 形成 ab,發(fā)現(xiàn)不在dict 中,那么繼續(xù)與前面的結(jié)合,形成 aab,發(fā)如今dict 中,那么 word 總體就滿足條件。



class Solution:# @param s, a string# @param dict, a set of string# @return a booleandef wordBreak(self, s, dict):if len( s ) == 0 or len(dict) == 0:return False#初始長度為0,表示的是之前的元素已經(jīng)搞定,能夠從0開始繼續(xù)向后dp = [ 0 ]# s串的長度,[1, len ( s )]。我們挨個(gè)去搞定興許的斷句for i in range(1, len( s ) + 1):#前面全部的合法的斷句處,也就是全部的合法的起始點(diǎn),由于若前面的都沒搞定。不能夠繼續(xù)后面的for j in xrange( len( dp ) - 1, -1, -1):substr = s[dp[j] : i]if substr in dict:dp.append(i)breakreturn dp[-1] == len( s )







轉(zhuǎn)載于:https://www.cnblogs.com/blfbuaa/p/7201900.html

總結(jié)

以上是生活随笔為你收集整理的【leetcode】Word Break(python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。