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