题目简介:
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])