判断字符串是否能分割成字典中的单词(二)——Leetcode系列(十二)

【LVGL】显示驱动移植后控件错位/撕裂的排查与修复指南 本文详细解析了LVGL显示驱动移植后常见的控件错位、撕裂等问题,提供了从基础配置检查到高级调试技巧的全面解决方案。重点介绍了分辨率设置、颜色格式匹配、刷新函数实现等关键环节,帮助开发者快速定位和修复显示异常问题,确保UI渲染效果符合预期。 阅读详情

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 = "catsanddog",
dict = ["cat", "cats", "and", "sand", "dog"].

A solution is ["cats and dog", "cat sand dog"].


My Answer:

public class Solution {
    private Map<String, Set<String>> map = new HashMap<String, Set<String>>();
    public List<String> wordBreak(String s, Set<String> dict) {
        Set<String> sentences = toSentence(s, dict);
        return setToList(sentences);
    }
    
    private Set<String> toSentence(String s, Set<String> dict){
        if(! map.containsKey(s)){
            Set<String> temp = new HashSet<String>();
            map.put(s,temp);
        }else{
        	return map.get(s);
        }
        int length = s.length();
        Set<String> mySet = map.get(s);
        if(dict.contains(s)){
            mySet.add(s);
        }
        for(int i = 1; i < length; i++){
            String head = s.substring(0,i);
            if(!dict.contains(head)){
                continue;
            }
            Set<String> tail = null;
            if(! map.containsKey(s.substring(i))){
                tail = toSentence(s.substring(i),dict);
            }else{
                tail = map.get(s.substring(i));
            }
            if(tail.size() == 0){
            	continue;
            }

            Iterator<String> tailIte = tail.iterator();
            while(tailIte.hasNext()){
            	mySet.add(head + " " + tailIte.next());
            }
            
        }
        
        return mySet;
        
    }
    
    private List<String> setToList(Set<String> set){
        List<String> list = new ArrayList<String>();
        Iterator<String> ite = set.iterator();
        while(ite.hasNext()){
            list.add(ite.next());
        }
        return list;
    }
}
题目来源:https://oj.leetcode.com/problems/word-break-ii/

leetcode每日一道(11)字符串是否能被切分为单词 题目描述 给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。 例如: 给定s=“leetcode”; dict=[“leet”, “code”]. 返回true,因为"leetcode"可以被分割成"leet code". 此题可以看成是我上一篇的题目的简易版,只要找到合法的切分,就返回tru... 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode139:单词拆分

这是一道动态规划问题,判断字符串能否由字典中的单词拼接而成。解题思路是定义dp数组,dp[i]表示前i个字符能否被拆分。初始化dp[0]为true,遍历字符串时检查所有可能的拆分点,若前j个字符可拆分且子串在字典中,则标记dp[i]为true。优化点包括使用HashSet存储字典和剪枝处理。最终返回dp[n]即可。

ylumwd的博客 607

判断字符串是否能分割成字典中的单词(一)——Leetcode系列(十一)

Word Break Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = "leetco

Hooting的码农笔记本 4260

【困难】力扣算法题解析LeetCode140:单词拆分 II

这篇文章介绍了如何通过动态规划和记忆化搜索解决字符串拆分问题。给定字符串 s 和字典 wordDict,要求将 s 拆分成字典中的单词,返回所有可能的拆分方案。 关键步骤: 动态规划剪枝:先用DP判断字符串是否可拆分,避免无效递归。 记忆化搜索:通过DFS遍历所有可能拆分,缓存子串结果避免重复计算。

ylumwd的博客 1081

python 判断一个字符串能否转为字典

当获取到一个不确定字符串,在正确的情况下是可以直接转成字典的,但是,当我们的代码对提供的字符串不进行判断是否可以转成字典,就可能造成代码的报错,严重造成项目的终止等。 我是通过抛出异常的方法进行验证 def is_dict(log_content): ''' 能否转成字典 :param log_content: :return: ''' try: ...

HADLM 2147

AUTOSAR入门

一、AUTOSAR是什么 AUTOSAR组织自己的介绍是 AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automot...

天涯遍地是小草的博客 3万+

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释:RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用注释:公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句类型,例如本人之前在公司开发的工具全是基于MSM7语句类型来进行的。

qxj2422640226的博客 2092

Codeforces Edu:双指针 » Step 3 » Practice:G. Not Very Rude Substring

题意: 解法: 枚举r,维护一个最小的l,满足[l,r]中"ab"子序列的数量不超过c. 维护[l,r]中每种字符的数量,设mp[x]为[l,r]中字符x的数量. 每当r右移时,如果s[r]=='b',那么"ab"子序列数量要加上mp['a'], 每当l右移时,如果s[l]=='a',那么"ab"子序列的数量要减去mp['b']. code: #include<bits/stdc++.h> #define int long long using namespace std; const i

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 342

CS1237卡尔曼滤波实战:如何用24位ADC实现电子秤级精度?

本文详细介绍了如何利用CS1237 24位ADC芯片结合卡尔曼滤波算法实现电子秤级精度测量。通过解析CS1237硬件特性、卡尔曼滤波原理及STM32驱动优化,提供了一套完整的解决方案,包括多通道支持、驱动代码实现和性能调优技巧,适用于工业测量和嵌入式开发领域。

linux的博客 1087

给定字符串,拆分成单词

问题 用C编写函数将一个字符串中所有单词摘出来到一个新的二维数组中(字符串中有数字和字母)例如aaa111aa11a1变换之后是三个字符串aaa,aa,a 程序 /* 给定一行文本,拆分成单词。 主要用到三个 string.h 中的库函数 1. strncpy(s, ct, n); 把字符从 cn 复制到 s 中,最多复制 n 个字符; 2. strpbrk(cs, ct) 在字符串 cs...

chenxizhan1995的博客 2614

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 490

QT6与QT5安装全攻略:从下载到环境配置一站式指南

本文提供了一份详尽的QT6与QT5安装教程,涵盖从版本选择、在线安装器使用到环境变量配置的全过程。针对新手常见痛点,重点对比了QT6与QT5的安装差异,并给出了MinGW与MSVC编译器的选择建议,旨在帮助开发者快速搭建稳定可用的QT开发环境,避免常见错误。

weixin_29216353的博客 311

Leetcode 139. 单词拆分

动态规划问题,dp[k]:到k位置是否可以划分成功 class Solution { public: bool wordBreak(string s, vector&lt;string&gt;&amp; wordDict) { vector&lt;bool&gt; dp(s.size(), false); for (int i = 0; i &lt; s....

Bendaai的博客 319

uniapp(全端兼容) - 最新详细uniapp全平台植入使用echarts图表插件,引入 Echarts 图表及使用详细教程,提供各种图表使用示例(拒绝复杂的过程,附带详细的使用示例保姆级教程)

uniapp 微信小程序 echats 图表,uni-app小程序引用echarts,niapp 微信小程序引入echats教程,uniapp 使用echats图表,uniapp开发如何在微信小程序平台使用echats图表,uniapp开发的小程序中怎么用echats,在uni-app中编译到微信小程序如何使用echarts,UNIAPP微信小程序使用Echarts,uni-app微信小程序使用echarts,Uniapp小程序端使用echarts最详细的教程,uni-app中使用Echarts绘画图表,u

✅ 精选推荐文章 1万+

Leetcode:给定一个字符串s和一个单词字典dict,确定是否可以将s分割成一个由一个或多个字典单词组成的空格分隔的序列。

Given a stringsand a dictionary of wordsdict, determine ifscan be segmented into a space-separated sequence of one or more dictionary words. For example, givens="leetcode",dict=["leet", "code"...

LeetCode:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum 2425

ISP算法:宽动态HDR

动态范围(Dynamic Range):在很多领域来表示某个变量的最大值和最小值的比值。在数字图像处理领域里,动态范围也被称为图像对比度,表示图像可以显示范围内,像素最大亮度值和最小亮度值的比值。 高动态范围图像(High Dynamic Range Image): 可以反映真实场景中高动态范围亮度信息图像。 高动态技术:能自动调整图像动态范围的一种技术。该技术是一种利用计算机高速运算产生高

a200800170331的专栏 1万+

Vue2 - 最新详细实现接入天地图详细配置流程及示例代码教程,提供获取用户当前定位的城市名称及省市区数据、精准经纬度信息、IP属地定位、地图搜索标点等示例,解决天地图跨域报错/页面白屏/定位不准问题

vue2,nuxt2,天地图,使用教程,vue接入国家天地图,定位api,ip属地定位,获取用户当前位置数据,省市区,地图不显示,白屏,报错,vue2如何使用天地图,地图选点,cors跨域,白名单设置了还是不行,vue项目调用天地图api实现定位,Vue2中使用天地图,详细教程,天地图申请密钥key教程,经纬度,经纬度不准确,一直定位北京,定位在北京不准怎么办,nuxt项目天地图,网站,网页,h5页面,地图显示不全,获取当前定位,如何使用天地图,拿到客户ip地址定位城市名称,距离计算,实时搜索地址逆解析,天

🏆 前端领域优质创作者 5327

leetcode139. 单词拆分,动态规划

leetcode139. 单词拆分,动态规划

热爱C++和golang的学生 2099

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

测评1:给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。

题目描述: 给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。 思路: 代码: ...

胡别致 . 1040

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

单词分割匹配字典

问题 给定一个字符串s和一个单词字典dict,确定s是否可以被分割成一个或多个字典单词的空格分隔序列。例如,给定s =“leetcode”, dict = [“leet”, “code”]。返回true,因为"leetcode"可以被分割为“leet code”。 解决方案 1. 朴素方法 这个问题可以通过使用一种简单的方法来解决。讨论总是可以从这开始。 public static boolean wordBreak1(String s, Set<String> dict) { ..

HUBA_yosa的博客 7067

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

力扣——单词拆分

通常情况下,Set 的 contains() 方法执行速度比 List 的 contains() 方法快。的时候,用Set储存字典中的单词查询更快。个字符可以被分割,假设分割的位置是。)是否可以被拼接,如果。

weixin_49332521的博客 1047

《leetCode-php》判断字符串是否可以由一个字符串数组中的元素拼接而来

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s ="leetcode", dict =["leet", "cod...

less_cold的博客 1564

【leetcode-字符串】单词拆分

题目: 给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。 示例 2: 输入: s = "applepenapple...

kangbin825的专栏 878

LeetCode 139. 单词拆分(DP)

1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" ...

Michael是个半路程序员 1237

leetcode 动态规划(单词拆分)

139.单词拆分力扣题目链接(opens new window)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。

mingchen_peng的博客 1857

Java实现 LeetCode 139 单词拆分

139. 单词拆分 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一...

5402

给定一个字符串s和一个单词dict的字典,确定s是否可以分割成一个或多个字典单词的空格分隔的序列。 s ="leetcode", dict =["leet", "code"].

本题源自LeetCode ------------------------------------------------------------------------------ 1 双重遍历字符串,判断子串是否在dic他中 2 用一个数组做标记,判断s[0-i]是否可划分为dict中的子串 bool wordBreak(string s, unordered_set &dic

i_am_bird的博客 4450
上一篇: 判断字符串是否能分割成字典中的单词(一)——Leetcode系列(十一)
下一篇: 深度复制链表——Leetcode系列(十三)
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值