【leetcode】Word Break(python)
思路是這種。我們從第一個(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 總體就滿足條件。
轉(zhuǎn)載于:https://www.cnblogs.com/blfbuaa/p/7201900.html
總結(jié)
以上是生活随笔為你收集整理的【leetcode】Word Break(python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis04--Mapper动态代
- 下一篇: Nginx code 常用状态码学习小结