107-单词切分

给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。

样例

给出
s = "lintcode"
dict = ["lint","code"]
返回 true 因为"lintcode"可以被空格切分成"lint code"

标签

动态规划 字符串处理

思路

使用动态规划,用一维数组 dp[i] 保存 0 - i 的子串可以被空格切分成一个或多个出现在字典中的单词

code

class Solution {
public:
    /*
     * @param s: A string
     * @param dict: A dictionary of words dict
     * @return: A boolean
     */
    bool wordBreak(string s, unordered_set<string> dict) {
        // write your code here
        int sizeS = s.size(), sizeD = dict.size();
        if (sizeS == 0 && sizeD == 0) {
            return true;
        }
        if (sizeS == 0 || sizeD == 0) {
            return false;
        }
        vector<bool> dp(sizeS + 1, false);
        dp[0] = true;
        for (int i = 0; i < sizeS; i++) {
            for (string str : dict ) {
                if (dp[i] == true && i + str.size() <= sizeS && s.substr(i, str.size()) == str) {
                    dp[i + str.size()] = true;
                }
            }
        }
        return dp[sizeS];
    }
};

相关文章:

  • 2021-09-12
  • 2021-12-08
  • 2021-11-21
  • 2021-11-14
  • 2021-08-04
  • 2021-12-29
  • 2021-10-07
  • 2021-08-16
猜你喜欢
  • 2021-10-07
  • 2021-12-20
  • 2021-08-13
  • 2021-09-19
  • 2022-12-23
  • 2021-12-05
  • 2021-10-29
相关资源
相似解决方案