140. Word Break II

文章目录

  • 1 题目理解
  • 2 回溯+记忆化

1 题目理解

140与130的区别是,当字符串可分的时候,要求返回具体的分割字符串。

2 回溯+记忆化

对于字符串s,如果前面一部分是单词列表中的词,则拆分出这个单词,右边的继续分割。
分割过程中,对起始下标i,已经分割过的,用map缓存。
使用字典树也可以加快搜索速度。


class Solution {private Trie trie;private List<String> result;public List<String> wordBreak(String s, List<String> wordDict) {int n = s.length();trie = new Trie();trie.initWord(wordDict);result = new ArrayList<String>();dfs(s,0);return cache.get(0);}private Map<Integer,List<String>> cache = new HashMap<Integer,List<String>>();private void dfs(String s, int i){if(i>=s.length()){return;}if(cache.get(i)!=null) return;List<String> r = new ArrayList<String>();for(int x = i+1;x<=s.length();x++){String left = s.substring(i,x);if(trie.find(left)){dfs(s,x);if(cache.get(x)!=null){for(String right : cache.get(x)){r.add(left+" "+right);}}else{r.add(left);}}}cache.put(i,r);}
}
class Trie{private TrieNode root = new TrieNode('/');public void initWord(List<String> wordDict){for (String word : wordDict){addWord(word);}}public boolean find(String word){TrieNode node = root;for(int i=0;i<word.length();i++){int index = word.charAt(i) - 'a';if(node.children[index]==null){return false;}node = node.children[index];}return  node.end;}private void addWord(String word) {TrieNode node = root;for(int i=0;i<word.length();i++){int index = word.charAt(i) - 'a';if(node.children[index]==null){node.children[index] = new TrieNode(word.charAt(i));}node = node.children[index];}node.end = true;}class TrieNode{TrieNode[] children = new TrieNode[26];boolean end;private char data;public TrieNode(char data){this.data = data;}}
}

补充:也可以在139的基础上做。在找到0到i可以分割的时候,记录下分割方式。当然这种方法也可以加上Trie树。

class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer,List<String>> resultMap = new HashMap<Integer,List<String>>();int n = s.length();boolean[] dp = new boolean[n+1];//从0到i可以被分解dp[0] = true;for(int i=1;i<=n;i++){resultMap.put(i, new ArrayList<String>());for(int j=0;j<i;j++){if(dp[j]==true && wordDict.contains(s.substring(j,i))){dp[i]=true;if(j==0){resultMap.get(i).add(s.substring(j,i));}else{for(String pre:resultMap.get(j)){resultMap.get(i).add(pre+" "+s.substring(j,i));}}                   }}}return resultMap.get(n);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc学习(25):Eclipse设置代码自动提示

Eclipse只需几步简单的设置就可以像idea那样代码自动提示了&#xff0c;喜欢的小伙伴可以赶紧动手设置&#xff0c;提升效率。 第一步&#xff1a;打开Eclipse --> Window --> Preferences 第二步&#xff1a;点击Java --> 打开Editor --> 点击Content Assist 第…

打破牢笼,展望更高层次的世界

打破牢笼&#xff0c;展望更高层次的世界--------------------------------------------------------------笔者袁永福是一个十多年的老程序猿&#xff0c;一穷二白的出来创业多年&#xff0c;期间经历许多曲折和磨难&#xff0c;成功的在炮火连天的商业战场上活了下来&#xf…

spring mvc学习(26):处理数据模型--从表单到controller传输数据

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

第一课 回归问题与应用

本系列是七月算法机器学习课程笔记 文章目录1 不同类型的学习2 基本术语与概念3 线性回归模型3.1 什么是线性回归3.2 损失函数3.3 最小化损失函数-梯度下降3.4 学习率有什么影响3.5 过拟合与欠拟合4 逻辑回归4.1 为什么要有逻辑回归4.2 什么是逻辑回归4.3决策边界线性边界判定非…

[推荐] TechNet 广播 SQL Server 2000完结篇

TechNet中文网络广播在之前已经推出了SQL Server 2000的基础系列和管理专家系列&#xff0c;使广大听众认识并掌握了SQL Server 2000的管理技巧。本次系列作为前两次系列课程的完结篇&#xff0c;将会从性能调优及维护的角度为广大听众提供了一道实用而精致的大餐&#xff0c;本…

spring mvc学习(28):get乱码解决

get请求乱码情况 编写一个RegistServlet处理用户的Get请求数据 View Code 运行结果发现输入中文提交后显示结果为乱码&#xff1a; jsp页面中 <meta http-equiv"content-type" content"text/html; charsetUTF-8">通知浏览器以utf-8解码 get请求…

第二课 决策树与随机森林

本系列是七月算法机器学习课程笔记 文章目录1 从LR到决策树1.1 决策树1.2 决策树的终止条件1.3 决策树划分依据1.3.1 信息熵1.3.2 信息增益1.3.3 ID3模型1.3.4 信息增益率1.3.5 基尼指数1.3.6 信息熵与基尼指数1.3.7 连续值属性2 回归树2.1 回归树构建方法3 从决策树到随机森林…

在ASP.NET中自动给URL地址加上超链接(好东东)

首先&#xff0c;要想在ASP.NET(C#)中使用正则表达式就必须把 System.Text.RegularExpressions 这个命名空间包含进来&#xff1a; using System.Text.RegularExpressions; 第二步是用正则表达式识别URL超链接&#xff1a; Regex urlregex new Regex("(http:\/\/([\w.]\/…

android apk 反编译

Apk文件结构  apk文件实际是一个zip压缩包&#xff0c;可以通过解压缩工具解开。以下是我们用zip解开helloworld.apk文件后看到的内容。可以看到其结构跟新建立的工程结构有些类似。java代码&#xff1a; |-- AndroidManifest.xml |-- META-INF | |-- CERT.RSA | |-- CERT.SF…

spring mvc学习(27):处理数据模型--从表单到controller传输数据续

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

第三课 SVM

本系列是七月算法机器学习课程笔记 文章目录1 问题2 key idea 13 key idea 24 key idea 35 key idea46 拉格朗日乘子求解7 核函数的发现学习SVM不要先看数学公式&#xff0c;这样把SVM的精华都丢掉了。学习SVM学习作者是如何构建出这样一个算法的过程。1 问题 无论线性分类、逻…

百度新闻的索引机制(二):智能聚类

百度新闻的索引机制(二)&#xff1a;智能聚类http://net.chinabyte.com/377/2520877.shtml 转载于:https://www.cnblogs.com/cy163/archive/2006/09/23/512337.html

spring mvc学习(29):modelandview向页面传输数据

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

C#远程开机

http://tryios.com/article/473.aspx C#远程开机 http://baike.baidu.com/view/1965454.htm 远程开机 http://www.cnblogs.com/whssunboy/archive/2007/12/05/984059.html C# 远程唤醒转载于:https://www.cnblogs.com/jacktang/articles/3309258.html

RESTORE DATABASE命令还原SQLServer 2005 数据库

今天在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!Restore failed for Server ADANDELI. (Microsoft.SqlServer.Smo)An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfoThe bac…

第一百一十九期:支付宝历年双十一背后的技术揭秘

和过去10年一样&#xff0c;2019年天猫双11又创造了一个全新的纪录。这个数字背后&#xff0c;是数代支付宝工程师们殚精竭虑、不断突破技术难关。 作者&#xff1a;蚂蚁金服科技 自从有了双十一这个电商节日&#xff0c;很多技术人的生命轨迹都改变了&#xff0c;这种年度高…

第五课 机器学习中的特征工程

本系列是七月算法机器学习课程笔记 文章目录1 特征工程与意义2 数据与特征处理2.1数据采集2.2 数据清洗2.3 数据采样2.4 特征处理2.4.1 数值型2.4.2 类别型2.4.3 时间型2.4.3 文本型2.4.4 统计特征3 特征选择3.1 为什么做特征选择3.2 特征选择的方法3.2.1 过滤型3.2.2 包裹型3.…

局域主机做服务器,安装DNN,外网访问的解决办法

局域主机做服务器,安装DNN&#xff0c;外网访问的解决办法 问题&#xff1a; 如图&#xff1a;局域网主机IIS安装了DotNetNuke 4.0.x版本&#xff0c;设置虚拟目录为&#xff1a;dnn &#xff0c;安装好之后&#xff0c;内网用户通过http://192.168.19.9/dnn访问是没问题…

第一百二十期:终于有篇看的懂的B树文章了!

索引&#xff0c;相信大多数人已经相当熟悉了&#xff0c;很多人都知道 MySQL 的索引主要以 B 树为主&#xff0c;但是要问到为什么用 B 树&#xff0c;恐怕很少有人能把前因后果讲述完整。本文就来从头到尾介绍下数据库的索引。 作者&#xff1a;安静的boy 索引&#xff0c;…

csharp:Nhibernate Procedure with CreateSQLQuery and GetNamedQuery

<?xml version"1.0" encoding"utf-8"?> <hibernate-mapping assembly"Domain" namespace"Domain" xmlns"urn:nhibernate-mapping-2.2"><class name"DuCardType" table"DuCardType" la…