給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典中出現的單詞。
說明:拆分時可以重複使用字典中的單詞。
你可以假設字典中沒有重複的單詞。
示例 1:
輸入: s = "leetcode", worddict = ["leet", "code"]
輸出: true
解釋: 返回 true 因為 "leetcode" 可以被拆分成 "leet code"。
示例 2:
輸入: s = "catsandog", worddict = ["cats", "dog", "sand", "and", "cat"]
輸出: false
''''''
思路:dp[i]表示從0到j(包含0和j)是不是可拆分的。那麼下一位是不是可以拆分可以讓k從0遍歷到i ,計算s[k:j]是不是再單詞中,並且dp[k]是不是1就可以判斷了
時間複雜度o(n^2*logm) logm是查詢花費的時間,m是worddict的長度
下面的**先判斷p[k]是不是1會更快些,讀者自己可以嘗試著改
'''
def wordbreak(self, s, worddict):
""":type s: str
:type worddict: list[str]
:rtype: bool
"""length = len(s)
dp = [0 for i in range(length)]
for i in range(length):
for j in range(i+1):
if s[j:i+1] in worddict :
if j==0 or j>0 and dp[j-1]==1 :
dp[i] = 1
break
if dp[-1]==1:
return true
else:
return false
LeetCode 單詞拆分
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典 現的單詞。說明 拆分時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s leetcode worddict leet code 輸出 true 解釋 返回...
leetcode 單詞拆分II
這道題一眼看去,就死類似於單詞拆分i的深度優先搜尋就可以解決的題目,不過這裡公升級了,就是要把每一種切分結果都要返回。具體 如下 class solution def wordbreak self,s str,worddict list str list str mem tmp self.dfs s...
leetcode 139 單詞拆分
題目 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,確定 s 是否可以被空格分割為乙個或多個在字典裡出現的單詞。你可以假設字典中無重複的單詞。例如,給出 s leetcode dict leet code 返回 true 因為 leetcode 可以被切分成 leet cod...