[leetcode] 139. Word Break

Vue3+Cesium项目报错分析 解决vue3框架上集成Cesium遇到的问题 ERROR ValidationError: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema. 阅读详情

Word Break

Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
Note:
The same word in the dictionary may be reused multiple times in the segmentation.
You may assume the dictionary does not contain duplicate words.
Example 1:

Input: s = “leetcode”, wordDict = [“leet”, “code”]
Output: true
Explanation: Return true because “leetcode” can be segmented as “leet code”.

Example 2:

Input: s = “applepenapple”, wordDict = [“apple”, “pen”]
Output: true
Explanation: Return true because “applepenapple” can be segmented as “apple pen apple”.
Note that you are allowed to reuse a dictionary word.

Example 3:

Input: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]
Output: false

解法1:动态规划

定义一个dp数组,大小为s.size()+1,初始化dp[0]=1,dp[i]表示s[0,i)数组可以拆分
用j把s[0,i)分为[0,j)和[j,i)两部分,dp[j]表示前一段是否能拆分,只需要判断后一段是否在字典中,就可以得到dp[i]是否能拆分。

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordSet(wordDict.begin(),wordDict.end());
        vector<int> memo(s.size(),-1);
        vector<int> dp(s.size()+1,0);
        dp[0] = 1;
        for (int i = 0; i < dp.size(); ++i) {
            for (int j = 0; j < i; ++j) {
                if (dp[j] && wordSet.count(s.substr(j, i - j))) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp.back();
    }
};

解法2:DFS

记忆数组 memo[i] 定义为范围为 [i, n] 的子字符串是否可以拆分,初始化为 -1,表示没有计算过,如果可以拆分,则赋值为1,反之为0。

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordSet(wordDict.begin(),wordDict.end());
        vector<int> memo(s.size(),-1);
        return helper(s,wordSet, memo, 0);
    }
    bool helper(string s, unordered_set<string>& wordSet, vector<int>& memo, int start){
        if(start == s.size())
            return true;
        if (memo[start] != -1) return memo[start];
        for(int i=start+1;i<=s.size();i++){
            string str = s.substr(start,i-start);
            if(wordSet.count(str) && helper(s, wordSet,memo,i)){
                return memo[start] = 1;
            }
        }
        return memo[start] = 0;
    }
};

解法3:BFS

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordSet(wordDict.begin(),wordDict.end());
        vector<bool> visited(s.size());
        queue<int> q;
        q.push(0);
        while(!q.empty()){
            int t = q.front();
            q.pop();
            if (!visited[t]) {
                for(int i=t+1;i<=s.size();i++){
                    if(wordSet.count(s.substr(t,i-t))){
                        q.push(i);
                        if(i == s.size())
                            return true;
                    }  
                }
                visited[t] = 1;
            }
        }
        return false;
    }
};

参考

https://www.cnblogs.com/grandyang/p/4257740.html

YOLO26改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块 本文记录的是。YOLO26主要用于轻量化应用部署,相关轻量化改进与其整体架构非常适配。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。 阅读详情

相关推荐

微带功分器设计与ADS-EM联合仿真实战解析

本文详细解析了微带功分器设计与ADS-EM联合仿真的实战技巧,涵盖特性阻抗计算、ADS原理图设计、版图生成与EM仿真等关键步骤。通过实际案例分享,帮助工程师掌握射频电路设计中的核心技术和调试方法,提升功分器设计效率与性能。

weixin_29280219的博客 450

Check if any String is empty in list,First Non-Empty String in list

预备知识:any() Any(x)判断x对象是否为空对象,如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true 请看https://docs.python.org/上的定义: any(iterable) 如果 iterable 的任一元素为真则返回 True。 如果所有迭代器为空,返回 False。 等价于: def any(iterable): fo...

u013657997的博客 323

autoware 激光-相机联合标定

autoware进行激光-相机联合标定 ~~~ 刚开始进行激光-相机联合标定的时候,出现了不少问题,在此记录一下整体标定流程,以防忘记。在此,特别感谢佳明师弟,在录制数据集时提供的帮助。 ~~~ 0.系统配置: Ubuntu18.04系统 ROS Melodic opencv 3.2.0 vlp-16 一.安装autoware 这部分网上教程挺多的,但我在编译的过程中仍存在不少bug,唉~_~。 二.安装calibration_camera_lidar,从a...

nuo112的博客 1万+

webpack3.0 配置多文件入口报错,求解

webpack-dev-server --inline --progress --config build/webpack.dev.conf.js [ ‘D:/backup/ihlp-hd-web/src/entries/entry1/main1.js’, ‘D:/backup/ihlp-hd-web/src/entries/entry2/main.js’ ] map { main1: ‘D:...

weixin_37117004的博客 3518

云架构师进阶【SAP迁移方案设计】手把手教您玩转SAP上云

一,项目背景介绍 今天又接到了北京某制造企业SAP迁移的场景,先简单说明一下,好好的SAP在运行着为什么要做迁移这类大动作呢?众所周知SAP的ERP是企业的绝对核心系统,尤其对于制造业更是核心的系统,这样一套核心系统还是生产环境在迁移的过程中必然要面临比较大的挑战,如果有任何问题的话,都会对企业的绩效产生很大的影响。 经过跟客户沟通才得知,客户的SAP原来的系统是托管在运营商机房里,近期感染了勒索病毒,导致业务宕机,SAP应用服务器无法启动,仅有的数据库服务器可以运行。基于上述情况公司领导当机立断决定迅

bdsh818的博客 4220

神州路由器DHCPv6配置

神州路由器DHCPv6配置.。

weixin_41687096的博客 461

options.allowedHosts[0] should be a non-empty string.

options.allowedHosts[0]

weixin_45043548的博客 3947

vscode配置matlab工作环境

前面有两篇文章我们分别讲了在vscode里面如何配置C语言环境和python环境,那两篇文章总体来说比较复杂,当然这篇也有许多有趣的问题。 附上链接: 文章目录matlab简介基本要求code runner插件与matlab相关的插件添加路径小结code runner是否支持更多语言更多选择另一个选择 matlab简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 MATLAB是ma

Cachel Wood的博客 4540

LeetCode(139)Word Break

题目如下: Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word. Return all such possible sentences. For example, given s

BUILD 1万+

SAP PS 收入确认方法配置清单(成本推导收入 / 项目进度推导收入)

摘要:本文详细介绍了SAPPS模块中两种收入确认方法的配置流程:成本推导收入(成本比例法)和项目进度推导收入(里程碑法)。通过事务码OKG1-OKG5等关键配置步骤,分别实现基于累计成本比例和里程碑完成权重的收入确认逻辑。文章对比了两种方法的适用场景和管控要点:成本法适用于成本与进度强相关的项目,需严控预计总成本;进度法则依赖明确的里程碑验收。同时提供了落地建议,包括项目类型绑定、数据校验和变更管控等最佳实践,为SAPPS系统收入确认功能实施提供完整指导。

金牌架构师 952

SAP物料主数据归档详解(物理删除)

顾问们的回答肯定的统一的不能,只能打上删除标记。物料设置好需要删除的物料号这里我们需要删除的物料是AG88,其中,若不选“考虑无删除标记的物料”,需要将需要归档的物料MM06打删除标记。平时在操作系统过程中经常会不小心创建出很多无用的物料主数据,但是系统只能通过MM06打上删除标记,但是物料最终在系统中还是可以查询到的。6、执行已设置变式的归档程序,执行完毕,点下图中的“Job”,每次执行完归档程序会产生两条作业。然后设置好开始的参数和假脱机的参数,三个都是绿灯就可以执行归档的操作,物理上删除物料主数据。

我小时候很黑的博客 5524

Leetcode139. Word Break

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。

magic_jiayu的博客 260

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 157

LeetCode139. Word Break

分析 难度 中 来源 https://leetcode.com/problems/word-break/ 思路 题目 Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separ...

ov流岚vo的专栏 242

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode 139. Word Break 题解

本题是动态规划的经典应用问题,主要考察对动态规划思想的理解和使用。通过使用动态规划,我们可以高效地判断是否可以利用字典中出现的单词拼接出给定的字符串。动态规划的核心思想是:定义一个数组dp,其中dp[i]表示字符串s的前i个字符是否可以被字典中的单词拼接而成,然后遍历每个位置,更新dp数组。这种方法不仅适用于单词拆分问题,还可以应用于许多其他类似的问题。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 3590

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

leetcode题解:第139题Word Break

https://leetcode-cn.com/problems/word-break/ 文章目录解法一、回溯代码解法二、动态规划代码复杂度分析 解法一、回溯 依照惯例,没有好的思路的时候,就先想想暴力解法怎么做。暴力解法无非是逐个单词地拆分字符串,每次选的单词可以重复。要实现暴力解法的话,肯定就是用回溯,因为回溯算法“撤销选择”的特点,保证了每次都能考虑到所有的单词。 简而言之,对于字符串s和单词word,word长度为n,当word与s[:n]相同时,就可以把word选来进行一次拆分,紧接着继续判断s[

chenf1999的博客 541

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Leetcode 139. Word Break (Medium) (cpp)

Leetcode 139. Word Break (Medium) (cpp)

还是需要多学习!闷声大发财,这是坠吼的! 529

Leetcode139题Word Break的两种动态规划解法

由leetcode139题Word Break产生的对动态规划的一点思考。 题目要求是这样的: Given a string s and a dictionary of words dict,determine if s can be segmented into a space-separatedsequence of one or more dictionary words. For e

hgqqtql的专栏 1922

Leetcode 139 Word Break

题目 Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words. Note: The same word in the dictionary may be reused multiple time

weixin_43796689的博客 158

【leetcode】139. Word Break

题目: 思路: 动态规划。用二维数组dp[i][j]保存s[i~j]是否在wordDict。然后用递归的方式进行DFS深度优先遍历,将所有可能的组合都尝试一遍。但是超时了,结果为29 / 36 test cases passed。 然后学习了https://www.cnblogs.com/reboot329/p/6168346.html之后,发现用一维数组dp(数组大小与字符串长度相同)就可以...

zxc120389574的博客 293
上一篇: [leetcode] 135. Candy
下一篇: [leetcode] 149. Max Points on a Line
Peng_maple
博客等级 码龄10年 0粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值