题目简介:
1.完全按照dict中的word进行切分匹配,一个char都不差
2.由于是连续匹配,所以是首尾相接,所以涉及到动态规划思想,需要保留上一个动态
3.广度递归非常耗时,不知道什么原因。
4.边界点注意区分清楚,连贯起来。
应用:思想应用,涉及到前后需要保持状态的匹配计算,要保留并利用中间状态。
相似问题: 动态规划,利用前面的状态。
class Solution:

    def wordBreak(self, s, wordDict):
        ok_list=[True]
        for i in range(1,len(s)+1):
            # ok_list.append(any(ok_list[j-1] and s[j:i] in wordDict for j in range(i)))
            iter_bools=list()
            for j in range(i):
                s_cur=s[j:i]
                bool_elem=s_cur in wordDict
                iter_bools.append(ok_list[j] and bool_elem)
            ok_list.append(any(iter_bools))
        return ok_list[-1]

if __name__=='__main__':
    s = "applepenapple"
    s = "catsandog"
    s='leetcode'
    wordDict = ["apple", "pen"]
    wordDict = ["cats", "dog", "sand", "and", "cat"]
    wordDict=["leet","code"]
    st=Solution()
    out=st.wordBreak(s,wordDict)
    print([out])

龙仔
12 声望4 粉丝