Leetcode 140. Word Break II
来源:互联网 发布:虚拟机网络不可用 编辑:程序博客网 时间:2024/06/11 20:35
Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, add spaces in s to construct a sentence where each word is a valid dictionary word. You may assume the dictionary does not contain duplicate words.
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"]
.
public List<String> wordBreak(String s, List<String> wordDict) { Set<String> set = new HashSet<>(wordDict); List<String> res = new ArrayList<>(); if(s == null || s.length() == 0) return res; if(wordBreakcheck(s, set)) helper(s,set,0,"",res); return res; } public boolean wordBreakcheck(String s, Set<String> dict) { boolean[] res = new boolean[s.length()+1]; res[0] = true; for(int i = 1; i <= s.length(); i++){ for(int j = i - 1; j >= 0; j--){ if(res[j] && dict.contains(s.substring(j, i))){ res[i] = true; break; } } } return res[s.length()]; } private void helper(String s, Set<String> dict, int start, String tmp, List<String> res){ if (start >= s.length()) { res.add(tmp); return; } StringBuilder sb = new StringBuilder(); for (int i = start; i < s.length(); i++) { sb.append(s.charAt(i)); if (dict.contains(sb.toString())) { String newString = new String(); if (tmp.length() > 0) newString = tmp + " " + sb.toString(); else newString = sb.toString(); helper(s, dict, i + 1, newString, res); } } }
public List<String> wordBreak(String s, List<String> wordDict) { List<String> res = new ArrayList<>(); if(s.length() == 0) return res; Map<String, List<String>> map = new HashMap<>(); return helper(s, wordDict, map); } private List<String> helper(String s, List<String> wordDict, Map<String, List<String>> map) { if(map.containsKey(s)) return map.get(s); List<String> res = new ArrayList<>(); if(s.length() == 0) { res.add(""); return res; } for(String word : wordDict) { if(s.startsWith(word)) { List<String> temp = helper(s.substring(word.length()), wordDict, map); for(String str : temp) { res.add(word + (str.length() == 0 ? "" : " ") + str); } } } map.put(s, res); return res; }
阅读全文
0 0
- [leetcode] 140.Word Break II
- LeetCode 140. Word Break II
- LeetCode 140. Word Break II
- leetcode.140. Word Break II
- LeetCode 140. Word Break II
- [LeetCode] 140. Word Break II
- 【LeetCode】140. Word Break II
- leetcode 140. Word Break II
- Leetcode 140. Word Break II
- leetcode 140. Word Break II
- [leetcode]Word Break II
- LeetCode:Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break II
- [LeetCode]Word Break II
- LeetCode | Word Break II
- [LeetCode] - Word Break II
- LeetCode - Word Break II
- Android A problem was found with the configuration of task ':app:packageRelease'
- 浅谈架构,架构的基础理解
- java web开发 高并发处理
- FFMPEG中的两输入Filter实现(二)
- user guide 说明
- Leetcode 140. Word Break II
- Referer与防盗链
- 利用LDO给VCAMA供电的设计要点
- IOS 微信分享和QQ分享的总结
- SpringBoot常用注解
- 4.4 创建多实例工具窗口
- 用JS在html页面实现打印功能
- Android自定义FlowLayout,可带固定按钮,可自定义样式、选择数量
- LLVM学习笔记(14)