LeetCode139——单词拆分

263 篇文章 26 订阅
订阅专栏

我的LeetCode代码仓:https://github.com/617076674/LeetCode

原题链接: https://leetcode-cn.com/problems/word-break/description/

题目描述:

知识点:动态规划

思路:动态规划

状态定义

f(x, y) -------- s中范围在[x, y]内的子串能否被被空格拆分为一个或多个在字典中出现的单词

状态转移

(1)如果s中范围在[x, y]内的子串出现在字典中,此时显然有f(x, y) = true。

(2)如果s中范围在[x, y]内的子串未出现在字典中,那么我们需要去看s中范围在[x, j]和[j + 1, y],j = x, ..., y内的两个子串是否能被拆分,一旦发现两个子串均能被拆分的情况,就判定f(x, y) = true。否则f(x, y) = false。

时间复杂度是O(mn ^ 2),其中m为wordDist中单词的数量,n为字符串s的长度。空间复杂度是O(n ^ 2)。

JAVA代码:

public class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        int n = s.length();
        boolean[][] results = new boolean[n][n];
        for (int i = 0; i < n; i++) {
            results[i][i] = include(s.substring(i, i + 1), wordDict);
        }
        for (int gap = -1; gap >= - n + 1; gap--) {
            for (int i = 0; i <= gap + n - 1; i++) {
                results[i][i - gap] = include(s.substring(i, i - gap + 1), wordDict);
                if(!results[i][i - gap]) {
                    for (int j = 0; j < - gap; j++) {
                        if(results[i][i + j] && results[i + j + 1][i - gap]) {
                            results[i][i - gap] = true;
                            break;
                        }
                    }
                }
            }
        }
        return results[0][n - 1];
    }
    private boolean include(String string, List<String> wordDict) {
        for (String s : wordDict) {
            if(s.equals(string)) {
                return true;
            }
        }
        return false;
    }
}

LeetCode解题报告:

 

LeetCode 单词拆分
hestyle的博客
02-23 897
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分...
139. 单词拆分
小桥流水
11-01 840
139. 单词拆分 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。 示例 2: 输入: s = "applepenapple".
LeetCode 139. 单词拆分动态规划,DFS和BFS解决)
数据结构和算法
09-06 1753
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码:6666 public boolean wordBreak(String s, List<String> dict) { boolean[] dp = new boolean[s.length() + 1]; for (i.
单词拆分——LeetCode
最新发布
2301_76697053的博客
08-06 970
定义一个布尔数组。
LeetCode 139. 单词拆分
vcj1009784814的博客
04-24 766
文章目录解法一:DFS暴搜解法二:DFS + 记忆化解法三:BFS动态规划 题目描述:给定一个字符串 s 和一个字符串集合 wordDict。求解,是否能用 wordDict 中的字符串,拼凑出字符串 s? (wordDict中的字符串可以使用任意次) 如 s = "leetcode",wordDict = ["leet", "code"],返回 true 如 s = applepenapple,wordDict = ["pen", "apple"],返回 true 通俗的说,就是先给你一堆字符串,问你能否
Leetcode 139. 单词拆分
liaoxuda_edu的博客
08-22 379
   暴力破解法: 先从wordDict中拿出第一个,去遍历整个s,找到对应的地方后,将s从找到的地方分成两个部分,再进行递归。 超时解: class Solution { public: bool IsSame(string S1, string S2) { for (int i = 0; i &lt; S1.size(); i++) { if (S1[i] != S...
LeetCode139.单词拆分动态规划——附图分析)
qq_40662405的博客
03-03 988
题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/word-break 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可
LeetCode 139. 单词拆分动态规划)—— JavaScript
ySFRaabbcc的博客
12-10 190
题链接:https://leetcode-cn.com/problems/word-break/ 题描述: 解题思路: dp[i] 表示从 s[0] 到 s[i -1] 的字符串能否被正确拆分。 dp[i] 通过判断 dp[j] 是为 true 且 [j, i] 的字符串是否存在字典中来求值。 那么我们要求的就是 dp[s.length] 是否能被正确拆分。 代码实现: /** * @param {string} s * @param {string[]} wordDict * @
LeetCode 139单词拆分 ——C#实现
Welcome to 兔子17号
05-04 666
题目: 给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetco...
LeetCode139. 单词拆分——dp
wudi_X的博客
08-17 463
题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = &quot;leetcode&quot;, wordDict = [&quot;leet&quot;, &quot;code&quot;] 输出: true 解释: 返回 true 因为 &quo
Leetcode刷题(第139题)——单词拆分
weixin_47450807的博客
03-11 1697
一、题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 二、示例 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。 输入: s = "applepenapple", wordDict = ["app
[C++] LeetCode 139. 单词拆分
沧海漂游的博客
04-10 1087
题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,确定 s 是否可以被空格分割为一个或多个在字典里出现的单词。你可以假设字典中无重复的单词。 例如,给出 s = "leetcode", dict = ["leet", "code"]。 返回 true 因为"leetcode" 可以被切分成 "leet code"。 更新 (2017/1/4): wordD...
Leetcode139.单词拆分
Gentleman_ZH
11-17 357
LeetCode139.单词拆分 动态规划 遍历字符串s,dp[i]表示s[0...i-1]是可分割的 class Solution { public: bool wordBreak(string s, vector&lt;string&gt;&amp; wordDict) { vector&lt;bool&gt; dp(s.size() + 1, false); dp[0] =...
leetcode 139 单词拆分(好题!)
ludan_xia的博客
03-10 412
139. 单词拆分 难度中等340 给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 ...
leetcode 139. 单词拆分
qq_39448574的博客
05-13 193
题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = “leetcode”, wordDict = [“leet”, “code”] 输出: true 解释: 返回 true 因为 “leetcode” 可以...
leetcode139 单词拆分
suyongcai1234的博客
03-13 133
leetcode139 单词拆分 题目详情 题目解析 递归(有记忆递归) 根据题目可以试想,如果确定字符串前 i 个字符能是wordDict中的单词,那么只要半段第 i 个 字符以后的字符串是否能够拆分即可。因此可以采用递归的方式进行穷举。 为了能够更快的查找到wordDict是否包含字符串,可以将wordDict 转换成HashSet。 直接进行递归的时间复杂度为 O(n^n) 递归过程中会产...
LeetCode-139-单词拆分
玉树临风,仙风道骨
01-19 594
单词拆分 题目描述:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例说明请见LeetCode官网。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/word-break/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解法一:穷举法 使用穷举+递归的方式求解,
leetcode_139_单词拆分
u013395544的专栏
04-04 1345
题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,确定 s 是否可以被空格分割为一个或多个在字典里出现的单词。你可以假设字典中无重复的单词。 例如,给出s = "leetcode",dict = ["leet", "code"]。 返回 true 因为 "leetcode" 可以被切分成 "leet code"。 分析:     字符串每一个字符位置后都有两种选...
leetcode 139. 单词拆分【记忆化搜索法进行回溯剪枝】
二十四桥明月夜的博客
06-10 760
方法一: 暴力dfs+回溯 时间复杂度:O(n^n)。考虑最坏情况 ss =aaaaaaa 。每一个前缀都在字典中,此时回溯树的复杂度会达到 n^n 空间复杂度:O(n)O(n) 。回溯树的深度最深达到 nn 。 果不其然超时了 class Solution { public: bool wordBreak(string s, vector<string>&a...
苏大Python复试上机:LeetCode高频题集——英语字母顺序挑战
在苏州大学的Python复试上机环节,学生可能会被要求解决一系列来自LeetCode的编程问题,以检验他们的编程能力和对Python的理解。这些题目涵盖了多个主题,包括但不限于字符串处理、数组操作、哈希表应用、数学算法、...
写文章

热门文章

  • LeetCode042——接雨水 17371
  • LeetCode094——二叉树的中序遍历 14238
  • LeetCode146——LRU缓存机制 13870
  • LeetCode046——全排列 12324
  • LeetCode076——最小覆盖子串 10125

分类专栏

  • Spring 3篇
  • LeetCode题解 263篇
  • PAT甲级真题题解 155篇
  • PAT乙级真题题解 94篇
  • 蓝桥杯题解 3篇
  • 数据结构与算法题目集 34篇
  • Data Structures and Algorithms 28篇
  • 中国大学MOOC-陈越、何钦铭-数据结构-2018秋 9篇
  • SSM框架 1篇
  • Effective Java
  • JDK源码解析 3篇
  • Java设计模式 3篇
  • JAVA ABC 2篇
  • AbstractQueuedSynchronizer
  • 源码解析

最新评论

  • 数据结构与算法题目集7-37——模拟EXCEL排序

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8028919, 请多输出高质量博客, 帮助更多的人

  • PAT-ADVANCED1045——Favorite Color Stripe

    有点呆呆的: 感谢思路讲解,终于懂了

  • LeetCode214——最短回文串

    oXingXingHuo12: [code=plain] class Solution { public: string shortestPalindrome(string s) { string s_rev(s.rbegin(), s.rend()); string s_new = s + "#" + s_rev; int n = s_new.size(); vector<int> next(n, 0); for (int i = 1; i < n; i++) { int j = next[i - 1]; while (j > 0 && s_new[i] != s_new[j]) { j = next[j - 1]; } if (s_new[i] == s_new[j]) { j++; } next[i] = j; } return s_rev.substr(0, s.size() - next[n - 1]) + s; } }; [/code]

  • 7个常用的面向对象设计原则

    我从远处聆听你: 来感谢博主,上午49,下午53,过了

  • 数据结构与算法题目集7-32——哥尼斯堡的“七桥问题”

    m0_60592258: 有python代码吗

最新文章

  • ThreadLocal笔记
  • AbstractQueuedSynchronizer笔记
  • JDK1.7、JDK1.8的HashMap、ConcurrentHashMap笔记
2021年3篇
2020年4篇
2019年125篇
2018年418篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家小型玻璃钢花盆厂家直销玻璃钢博物馆雕塑制作保定玻璃钢园林雕塑湘潭大象玻璃钢雕塑琼中玻璃钢卡通人物雕塑工厂无锡秋季商场美陈天津小品系列玻璃钢雕塑定做商场美陈大赛设计东莞玻璃钢植物雕塑制作乌鲁木齐市玻璃钢雕塑景观厂许昌校园玻璃钢景观雕塑厂家长春小品系列玻璃钢雕塑公司河南景区玻璃钢雕塑多少钱玻璃钢雕塑厂哪家合适内蒙玻璃钢卡通雕塑源城玻璃钢花盆花器玻璃钢雕塑制品制作鼎湖玻璃钢人物雕塑价格北京常见商场美陈怎么样单县制作玻璃钢雕塑公司哪家好枣庄景观玻璃钢雕塑工厂安阳景观玻璃钢雕塑徐州湛江玻璃钢动物雕塑溧水百货商场美陈特色玻璃钢花盆订购吕梁玻璃钢雕塑制作厂家玻璃钢仿铜雕塑效果图玻璃钢雕塑西游记徐州仿铜玻璃钢雕塑制作玻璃钢雕塑彩绘香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化