zoukankan      html  css  js  c++  java
  • lintcode-107-单词切分

    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];
        }
    };
    
  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7407071.html
Copyright © 2011-2022 走看看