leetcode-139. 单词拆分(记忆化搜索|动态规划)

leetcode-139. 单词拆分(记忆化搜索|动态规划)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict = [

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个非空字符串 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. 记忆化搜索

class Solution { 
   
public:
    set<string>m;
    bool wordBreak(string s, vector<string>& wordDict) { 
   
        if(s == "")return true;
        if(m.find(s) != m.end())return false;
        for(auto &a : wordDict){ 
   
            int len = a.size();
            if(s.size() >= len){ 
   
                string t = s.substr(0,len);
                if(t == a && wordBreak(s.substr(len),wordDict))return true;
            }
        }
        m.insert(s);
        return false;
    }
};
  1. 动态规划
const int N = 1e5 + 10;

class Solution { 
   
public:
    bool wordBreak(string s, vector<string>& wordDict) { 
   
        int n = s.size();
        bool f[N] = { 
   false};
        f[0] = true;
        for(int i = 1;i <= n;i ++){ 
   
            for(auto &w : wordDict){ 
   
                int l = i - w.size();
                int len = w.size();
                if(l >= 0 && w == s.substr(l,len)){ 
   
                    f[i] = f[i] | f[l];
                }
            }
        }
        return f[n];
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168555.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • activate-power-mode安装与设置

    activate-power-mode安装与设置Windowactivatepowermode去掉combo/shake,其他三个全勾上,现在用起来就很爽了,赶紧体验吧。

    2022年7月1日
    26
  • Weka简介

    Weka简介简介 Weka 的全名是怀卡托智能分析环境 WaikatoEnvir 是一款免费的 非商业化 与之对应的是 SPSS 公司商业数据挖掘产品 Clementine 的 基于 JAVA 环境下开源的机器学习 machinelearn 以及数据挖掘 dataminining 软件 它和它的源代码可在其官方网站下载 有趣的是 该软件的缩写 WEKA

    2025年9月14日
    0
  • ListView 排序问题[通俗易懂]

    ListView 排序问题[通俗易懂] 在DataGrid 中有自带的排序,但是在ListeView中却没有这一项,下面就给出我平时用的ListView的排序使用方法,给志同道合的朋友们参考参考:在ColumnClick事件下添加:其中要注意:intsortColumn=-1;其中sortColumn用来记录上次排序的列的索引privatevoidlistView1_ColumnClick(objectse

    2022年10月3日
    2
  • Yui3使用指南一

    Yui3使用指南一1、开始使用script>//CreateaYUIsandboxonyourpage.YUI().use(‘node’,’event’,function(Y){//TheNodeandEventmodulesareloadedandreadytouse.//Yourcodegoeshere!});script>

    2022年7月12日
    17
  • 越来越多的Java程序员转行Java大数据…[通俗易懂]

    越来越多的Java程序员转行Java大数据…[通俗易懂]JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入IT行业,首选的第一门语言就是JAVA。  但是,在未来肯定是大数据的天下,人工智能的爆发,将会有大量企业会进入大数据领域,从而产生大量的大数据人才需求。据最新发布的《大数据人才报告》显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万。领英报…

    2022年7月9日
    162
  • wireshark抓取arp包分析_dns协议抓包分析

    wireshark抓取arp包分析_dns协议抓包分析使用Wireshark工具抓取ARP协议的数据包,分析ARP协议的地址解析过程、自主学习逻辑以及初次访问和多次访问的区别。

    2022年9月7日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号