LeetCode139 單詞拆分

2021-10-14 21:47:57 字數 2025 閱讀 7274

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典**現的單詞。

說明:

拆分時可以重複使用字典中的單詞。

你可以假設字典中沒有重複的單詞。

示例 1:

輸入: s = "leetcode", worddict = ["leet", "code"]

輸出: true

解釋: 返回 true 因為 "leetcode" 可以被拆分成 "leet code"。

示例 2:

輸出: true

注意你可以重複使用字典中的單詞。

示例 3:

輸入: s = "catsandog", worddict = ["cats", "dog", "sand", "and", "cat"]

輸出: false

class solution 

return dfs(s, 0);

} bool dfs(string &str, int nowindex)

//對長度進行窮舉

方法二:將回溯法修改為廣度優先搜尋法。但是還是超時了。。。

class solution 

setwordlengthset;//用於儲存worddict中單詞的長度

int strsize = s.size();

//首先掃瞄一遍,獲取worddict長度的種類

for (auto word : worddict)

queuemyqueue;

myqueue.push(0); // queue中儲存的是每次開始匹配單詞的位置

int tempqueuesize, tempbegin;

while (!myqueue.empty())

myqueue.push(tempbegin + *it);}}

}} return false;

}};

方法三:動態規劃法。

class solution 

int strsize = s.size();

vectordp(strsize, false);//dp[i] == true表示[0, i]可以有worddict拼湊出

方法三優化:第二層for迴圈窮舉長度時,比較笨,每乙個長度都進行窮舉,但其實worddict最長的長度都有乙個限度,最大值,所以長度窮舉需要控制。

class solution 

int strsize = s.size();

vectordp(strsize, false);//dp[i] == true表示[0, i]可以有worddict拼湊出

//獲取最長字串長度

leetcode 139 單詞拆分

題目 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,確定 s 是否可以被空格分割為乙個或多個在字典裡出現的單詞。你可以假設字典中無重複的單詞。例如,給出 s leetcode dict leet code 返回 true 因為 leetcode 可以被切分成 leet cod...

leetcode139 單詞拆分

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典中出現的單詞。說明 拆分時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s leetcode worddict leet code 輸出 true 解釋 返...

leetcode139 單詞拆分

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典 現的單詞。動態規劃,dp i 表示前i個字元能否被拆分 class solution def wordbreak self,s str,worddict list str bool ...