• Leetcode 139. 单词拆分 dp


    地址 https://leetcode-cn.com/problems/word-break/

    给你一个字符串 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
    s 和 wordDict[i] 仅有小写英文字母组成
    wordDict 中的所有字符串 互不相同
    

    解答
    尝试dfs遍历各种组合方式,查看能否得到答案,时间复杂度是指数级别,必定超时不予考虑。
    可以考虑使用动态规划优化暴力搜索时间
    dp[j] 表示0到j的子字符串可以使用字典中的单词完美匹配。
    那么如果当前位置为x 且j+1到x的子字符串可以在字典找到,且dp[j]标识为真,那么dp[x]也为真
    最后整个字符串能否完美匹配字典,查询dp[]数组对应的位置即可

    class Solution {
    public:
        bool wordBreak(string s, vector<string>& wordDict) {
            int dp[310]; memset(dp,0,sizeof dp);
            unordered_set<string> ss;
            s.insert(s.begin(),'#');
            for(auto& e:wordDict){
                ss.insert(e);
            }
            dp[0] = 1;
            for(int i = 1;i < s.size();i++ ){
                for(int j =i-1;j>=0;j--){
                    if(dp[j]==1 ){
                        string subs = s.substr(j+1,i-j);
                        if(ss.count(subs)!=0) {
                            dp[i]=1;break; 
                        }
                    }
                }
            }
    
            return dp[s.size()-1];
        }
    };
    
    

    我的视频题解空间

  • 相关阅读:
    statement 对象执行sql语句
    复习 利用表单传递参数
    多个jsp页面共享Java bean
    Rquest对象代码练习
    Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
    oracle基本建表语句
    Oracle存储过程创建及调用
    Oracle存储过程(增、删、改)写法、oracle执行存储过程
    ExecuteNonQuery()的用法
    WinForm里面连接Oracle数据库
  • 原文地址:https://www.cnblogs.com/itdef/p/15914023.html
Copyright © 2020-2023  润新知