本文主要是介绍Java | Leetcode Java题解之第140题单词拆分II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
题解:
class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer, List<List<String>>> map = new HashMap<Integer, List<List<String>>>();List<List<String>> wordBreaks = backtrack(s, s.length(), new HashSet<String>(wordDict), 0, map);List<String> breakList = new LinkedList<String>();for (List<String> wordBreak : wordBreaks) {breakList.add(String.join(" ", wordBreak));}return breakList;}public List<List<String>> backtrack(String s, int length, Set<String> wordSet, int index, Map<Integer, List<List<String>>> map) {if (!map.containsKey(index)) {List<List<String>> wordBreaks = new LinkedList<List<String>>();if (index == length) {wordBreaks.add(new LinkedList<String>());}for (int i = index + 1; i <= length; i++) {String word = s.substring(index, i);if (wordSet.contains(word)) {List<List<String>> nextWordBreaks = backtrack(s, length, wordSet, i, map);for (List<String> nextWordBreak : nextWordBreaks) {LinkedList<String> wordBreak = new LinkedList<String>(nextWordBreak);wordBreak.offerFirst(word);wordBreaks.add(wordBreak);}}}map.put(index, wordBreaks);}return map.get(index);}
}
这篇关于Java | Leetcode Java题解之第140题单词拆分II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!