英语单词记忆法拆分2000个_什么是hash算法

英语单词记忆法拆分2000个_什么是hash算法给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = “catsanddog”wordDict = [“cat”, “cats”, “and”, “sand”, “dog”]输出:[ “cats and dog”, “cat sand dog”]示例 2:输入:s = “

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个非空字符串 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"]
输出:
[]

题解
记忆化搜索+hash

class Solution { 
   
public:
    string t;
    unordered_map<string,bool>mm;
    int Min,Max;
    vector<string> rem[10000];
    int max(int a,int b){ 
   
        return a > b ? a : b;
    }
    int min(int a,int b){ 
   
        return a < b ? a : b;
    }
    void dfs(int u,string &s){ 
   
        if(rem[u].size() != 0)return;
        if(u == s.size()){ 
   
            rem[u].push_back("");
            return;
        }
        for(int len = Min;len <= Max;len ++){ 
   
            if(s.size() - u >= len && mm.find(s.substr(u,len)) != mm.end()){ 
   
                dfs(u + len,s);
                for(auto &line : rem[u + len]){ 
   
                    rem[u].push_back(s.substr(u,len) + " " + line);
                }
            }
        }
    }
    vector<string> wordBreak(string s, vector<string>& wordDict) { 
   
        t = "";
        Min = 0x3f3f3f3f,Max = 0;
        for(int i = 0;i < wordDict.size();i ++){ 
   
            Min = min(wordDict[i].size(),Min);
            Max = max(wordDict[i].size(),Max);
        }
        for(auto &s : wordDict){ 
   
            mm[s] = true;
        }
        dfs(0,s);
        for(auto & s : rem[0]){ 
   
            s.erase(s.size() - 1,1);
        }
        return rem[0];
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169124.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1

    时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1时钟周期     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。    在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。     8051单片机把一个时钟

    2022年10月13日
    3
  • 证明 poj 1014 模优化修剪,部分递归 有错误

    证明 poj 1014 模优化修剪,部分递归 有错误

    2022年1月4日
    62
  • TCP和UDP的区别是什么_socket tcp udp区别

    TCP和UDP的区别是什么_socket tcp udp区别TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图IP:网络层协议;(高速公路)TCP和UDP:传输层协议;(卡车)HTTP:应用层协议;(货物)。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。SOCKET:套

    2022年9月20日
    2
  • iscsiadm 命令的总结「建议收藏」

    iscsiadm 命令的总结「建议收藏」iscsiadm的命令汇总1.发现iscsi存储:iscsiadm-mdiscovery-tst-pISCSI_IP2.查看iscsi发现记录iscsiadm-mnode3.删除iscsi发现记录iscsiadm-mnode-odelete-TLUN_NAME-pISCSI_IP4.登录iscsi存储…

    2022年8月22日
    7
  • 我的世界java手机_我的世界java手机版

    我的世界java手机_我的世界java手机版我的世界java手机版是一款非常好玩的模拟经营游戏,游戏非常的自由,你几乎可以在游戏中干任何事,你可以自己建造一个世界,或是制作一个像素版的动漫人物,你还可以探索这个世界,寻找资源,你还可以和好友一起在这里进行对抗,你还在等什么,赶快来体验吧!我的世界java手机版游戏特色没有华丽的画面,没有什么游戏特效但是它最大的优势就是在于它的游戏性玩家在一个完全开放的世界,可以完全按照自己的想法建造我的世界…

    2022年7月8日
    20
  • java连接redis集群方式_redis java

    java连接redis集群方式_redis javapackageorg.rx.util;importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Autowired;im…

    2022年10月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号