• 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;
        }
    }
    
  • 相关阅读:
    表的外键创建:
    django内容回顾:
    编辑出版社:
    删除出版社:
    新增出版社:
    Windows XP SP3中远程桌面实现多用户登陆
    Hibernate基本概念 (4)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946767.html
Copyright © 2020-2023  润新知