zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 140 单词拆分 II(二)

    140. 单词拆分 II

    给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。

    说明:

    分隔时可以重复使用字典中的单词。
    你可以假设字典中没有重复的单词。
    示例 1:

    输入:
    s = “catsanddog”
    wordDict = [“cat”, “cats”, “and”, “sand”, “dog”]
    输出:
    [
    “cats and dog”,
    “cat sand dog”
    ]
    示例 2:

    输入:
    s = “pineapplepenapple”
    wordDict = [“apple”, “pen”, “applepen”, “pine”, “pineapple”]
    输出:
    [
    “pine apple pen apple”,
    “pineapple pen apple”,
    “pine applepen apple”
    ]
    解释: 注意你可以重复使用字典中的单词。
    示例 3:

    输入:
    s = “catsandog”
    wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]
    输出:
    []

    class Solution {
          private Map<String, List<String>> cache = new HashMap<>();
    
        public List<String> wordBreak(String s, List<String> wordDict) {
            return dfs(s, wordDict,0);
        }
    
    
        private List<String> dfs(String s, List<String> wordDict, int offset){
    
            if (offset == s.length()){
                List<String> res = new ArrayList<>();
                res.add("");
                return res;
            }
            
            if (cache.containsKey(s.substring(offset))){
               return cache.get(s.substring(offset));
            }
    
            List<String> res = new ArrayList<>();
            for (String word : wordDict){
                if (word.equals(s.substring(offset, Math.min(s.length(),offset + word.length())))){
                    List<String> next = dfs(s, wordDict, offset + word.length());
                    for (String str: next){
                        res.add((word + " "+ str).trim());
                    }
                }
            }
    
            cache.put(s.substring(offset),res);
            return res;
        }
    }
    
  • 相关阅读:
    并发与并行
    连接221.5.250.163的16000端口问题(转载)
    删除瑞星 江民 卡巴 360文件夹下的MFC42.DLL
    pif文件
    超级浓缩diy.asp上传小马
    删除瑞星 江民 卡巴 360文件夹下的MFC42.DLL
    超级浓缩diy.asp上传小马
    一个怪异的病毒Backdoor.RWX.2005.hy(转载)
    一个怪异的病毒Backdoor.RWX.2005.hy(转载)
    修改加速软件之本地分流(突破电信上网限制)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075493.html
Copyright © 2011-2022 走看看