單詞拆分 leetcode 高階

2021-08-22 13:42:57 字數 1009 閱讀 9087

給定乙個非空字串 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...