Word Break II
来源:互联网 发布:中国野生蜘蛛网络图鉴 编辑:程序博客网 时间:2024/05/21 10:31
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"].
这个题目和上一个很相似,但改成用List数组words保存符合的单词。如下图,再用深搜
的方法得到所有可能的组合。
public class Solution { public List<String> wordBreak(String s, Set<String> wordDict) { List<String>[] words=new ArrayList[s.length()+1]; words[0]=new ArrayList<String>(); for(int i=0;i<s.length();i++){ if(words[i]==null)continue; for(String str:wordDict){ int len=str.length(); int start=i+len; if(start>s.length())continue; if(s.substring(i,start).equals(str)){ if(words[start]==null) words[start]=new ArrayList<String>(); words[start].add(str); } } } List<String> result=new LinkedList<String>(); if(words[s.length()]==null) return result; List<String> tmp=new ArrayList<String>(); dfs(words,s.length(),result,tmp); return result; } private void dfs(List<String>[] words,int end,List<String> result,List<String> tmp){ if(end<=0){ String path=tmp.get(tmp.size()-1); for(int i=tmp.size()-2;i>=0;i--) path+=" "+tmp.get(i); result.add(path); } for(String str:words[end]){ tmp.add(str); dfs(words,end-str.length(),result,tmp); tmp.remove(tmp.size()-1); } }}
0 0
- Word Break && Word Break II
- Word Break && Word Break II
- [leetcode]Word Break II
- Word Break II
- Word Break II
- LeetCode:Word Break II
- Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break II
- [LeetCode]Word Break II
- LeetCode | Word Break II
- Word Break II
- Word Break II
- [LeetCode] - Word Break II
- LeetCode - Word Break II
- Leetcode Word Break II
- Word Break II
- Word Break II
- 《计算机网络》-----课本内容
- 解决 “VC++ 多线程编程,win32,MFC 例子(转)”在高版本上运行有错误的问题
- Android ContentValues类
- iOS-关于UINavigationController的title不显示问题
- ZOJ 3547 - The Boss on Mars(容斥)
- Word Break II
- oracle 之总结
- 实习小结十一:PHP实现每周排名(随排名变化,箭头改变)
- PC110103(旅行)(The Trip)
- C#一些实用的,容易被遗忘的特性,经验和技巧
- Intent用法大全
- Java统计二进制数中1的个数
- 机器学习之实战朴素贝叶斯算法
- 3.1.3 值类型与引用类型的区别