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;
        }
    }
    
  • 相关阅读:
    PL/SQL详细介绍
    Linux服务器性能评估(转)
    oracle命令(转)
    Makefile介绍(转)
    delphi 指针
    浏览器的工作原理(转)
    高性能分布式计算与存储系统设计概要(上)(转)
    HTTP协议详解(转)
    MySQL性能优化(转)
    redhat 6.2安装telnet服务
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946767.html
Copyright © 2011-2022 走看看