樂扣139單詞拆分

2021-10-24 04:16:57 字數 1326 閱讀 7037

問題描述 :

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

思路:

從字串s中擷取一段字串word,判斷word是否為worddict裡的單詞,若是,則標記為true

新建乙個vector< bool >dp(len+1,false)

dp[i] 表示第 i 個字元前,所有的字元是否可以按字典拆分成單詞

其中第 i - 1 個字元是上乙個詞的結尾字母,第 i 個字元是乙個新詞的開頭字母

初始值 dp[0] = true ,表示第 0 個字元是乙個新詞的開頭字母

所求的答案為 dp[s.size()] ,表示這個字串是否可以拆分成字典中的單詞

另外:s.substr(i).find(word) //表示從s字串的第i位開始擷取一直到最後一位,這個新擷取的字串裡是否能找到word,若找得到則返回首次出現的第乙個字元的位置

即用s.substr(i).find(word) ==0 來判斷

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

class

solution

}return dp[len];}

};intmain()

bool res=

solution()

.wordbreak

(s,worddict)

; cout<<

(res?

"true"

:"false"

)

}

139 單詞拆分 力扣

題意理解 給定乙個字串,給定乙個字串陣列,問字串能否用字串陣列拼接而成,字串陣列中的字串可以重複出現 問題分析 記憶性遞迴 這種組合問題需要遞迴來處理。0501 用動規來做 思路是字串分割為前幾個字元,後幾個字元,轉移方程是用前幾個字元是否可拆分,配上後面的字串是否存在。遍歷的時候容易出錯。其他05...

139 單詞拆分

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典中出現的單詞。說明 示例 1 輸入 s leetcode worddict leet code 輸出 true解釋 返回 true 因為 leetcode 可以被拆分成 leet co...

139 單詞拆分

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典 現的單詞。說明 示例 1 輸入 s leetcode worddict leet code 輸出 true 解釋 返回 true 因為 leetcode 可以被拆分成 leet co...