1. 程式人生 > 其它 >139. 單詞拆分

139. 單詞拆分

難度中等

給你一個字串s和一個字串列表wordDict作為字典,判定s是否可以由空格拆分為一個或多個在字典中出現的單詞。

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

示例 1:

輸入: s = "leetcode", wordDict = ["leet", "code"]
輸出: true
解釋: 返回 true 因為 "leetcode" 可以被拆分成 "leet code"。

示例 2:

輸入: s = "applepenapple", wordDict = ["apple", "pen"]
輸出: true
解釋: 返回 true 因為 "applepenapple" 可以被拆分成 "
apple pen apple"。 注意你可以重複使用字典中的單詞。

示例 3:

輸入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
輸出: false

提示:

  • 1 <= s.length <= 300
  • 1 <= wordDict.length <= 1000
  • 1 <= wordDict[i].length <= 20
  • swordDict[i]僅有小寫英文字母組成
  • wordDict中的所有字串互不相同
class Solution {
public:
    
bool wordBreak(string s, vector<string>& wordDict) { vector<bool>dp(s.size()+1,false); dp[0] = true; for(int j = 1;j <=s.size();j++) { for(int i = 0;i<wordDict.size();i++) { auto word = wordDict[i];
int word_len = word.size(); if(j-word_len>=0 && s.substr(j-word_len,word_len)==word) { dp[j] = dp[j] || dp[j-word_len]; } } } return dp[s.size()]; } };