博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode Word Break II
阅读量:6801 次
发布时间:2019-06-26

本文共 2036 字,大约阅读时间需要 6 分钟。

题目地址:

题目解析:看到题目的第一思路是采用递归暴力解法,每找到一个单词将单词添加到返回的结果集中,并将查找的开始位置后移直到字符串的结尾。

题目解答:

import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;public class Solution {    public List
wordBreak(String s, Set
wordDict) { List
res = new LinkedList
(); if(s == null || s.length() == 0){ return res; } wordBreak(s, 0, new StringBuilder(), wordDict, res); return res; } private void wordBreak(String s,int start,StringBuilder temp,Set
dict,List
ret){ if(start>=s.length()){ ret.add(temp.toString()); return; } int len = temp.length(); for(int i=start;i

这个解法的思路很简单,但是中间有很多重复的步骤,而且这些重复的步骤有有很多字符串操作比较费时,故考虑先使用动态规划找到能break的点,然后以能break点来遍历找到所有break的路径,解答如下:

import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;public class Solution {    public static List
wordBreak(String s, Set
dict) { if (s == null || s.length() == 0 || dict == null) { return null; } List
ret = new ArrayList
(); List
path = new ArrayList
(); int len = s.length(); boolean[] D = new boolean[len + 1]; D[len] = true; for(int i=len-1;i>=0;i--){ D[i] = false; for(int j=i;j
dict, List
path, List
ret, int index, boolean canBreak[]) { int len = s.length(); if (index == len) { StringBuilder sb = new StringBuilder(); for (String str: path) { sb.append(str); sb.append(" "); } sb.deleteCharAt(sb.length() - 1); ret.add(sb.toString()); return; } if (!canBreak[index]) { return; } for (int i = index; i < len; i++) { String left = s.substring(index, i + 1); if (dict.contains(left)) { path.add(left); dfs(s, dict, path, ret, i + 1, canBreak); path.remove(path.size() - 1); } } }}

 

转载于:https://www.cnblogs.com/xiongyuesen/p/4440497.html

你可能感兴趣的文章
RHEL6.3下配置简单Apache https
查看>>
利用Cocos2dx-3.0新物理特性模拟弹珠迷宫
查看>>
Office 365系列之三:Office365初体验
查看>>
VMware View client for iPad在医疗行业的应用
查看>>
Altiris 7.1 Agent
查看>>
独家爆料:创宇云与小鸟云的故事
查看>>
Windows Server 2012 RMS for Exchange Server 2013
查看>>
Linux网络IP配置
查看>>
FireEye:K3chang行动***欧洲外交部门
查看>>
关于Spring MVC 4,你需要知道的那些事
查看>>
如何远程调试Python代码
查看>>
你会用Python写洗脑神曲吗?
查看>>
kubernetes集群配置serviceaccount
查看>>
MyBatis多参数传递之默认命名方式示例——MyBatis学习笔记之十二
查看>>
Exchange 2013部署系列之(六)配置邮件流和客户端访问
查看>>
创业三年,走通一条路
查看>>
Mac 平台下功能强大的Shimo软件使用指南
查看>>
Hyper-V 3中虚拟机CPU竞争机制
查看>>
移动搜索的4个主要入口
查看>>
Win32 文件(3)
查看>>