英语单词记忆法拆分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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • string转JSONObject遍历多层找到key的value

    string转JSONObject遍历多层找到key的value先上代码packagecom.zhph;/***@Description:*@Author:xuhaibo*@Date:${Date}*@ModifiedBy:*/importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importjava.util.Iterator;/****@compa

    2022年8月23日
    11
  • java运行环境_如何搭建Java运行环境?

    java运行环境_如何搭建Java运行环境?前言对于运行一个Java程序,我们首先需要有一个运行Java程序的平台程序,这个平台程序就是Java虚拟机。本篇文章将介绍如何在Windows系统上搭建一个Java程序的运行环境,主要分为两个步骤:安装JDK,配置环境变量。Windows系统Java运行环境配置下载JDK并安装首先我们需要下载java开发工具包JDK,JDK中包含了JRE(Java运行环境)和一些官方提供给我们的工具,在oracl…

    2022年7月7日
    22
  • idea 选中代码生成方法

    idea选中代码生成方法非常好用这边给大家送上显示GIF快捷键:Ctrl+Alt+M觉得本文章对您有帮助,那么可以选择打赏。打赏多少,您高兴就行,谢谢您对我的支持!~(@^_^@)~微信扫一扫…

    2022年4月8日
    161
  • phpstorm永久激活码2021【注册码】「建议收藏」

    phpstorm永久激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    135
  • 使用Redis实现优先级队列

    使用Redis实现优先级队列优先级队列是一种如先进先出队列和堆栈数据结构的抽象数据类型。所不同的是每一个元素关联一个“优先级”。优先级高的元素比优先级低的元素优先得到处理。本文讲解如何基于Redis的SORTEDSET数据类型实现优先级队列。SORTEDSET中元素关联一个SCORE,可以按SCORE有序查询元素。优先级队列基本操作实现如下:is_empty:查看队列是否为空。使用EXISTS命…

    2022年9月23日
    3
  • jboss安装与配置_JbusDriver

    jboss安装与配置_JbusDriver1,下载jboss6.0产品jboss官网下载地址:http://www.jboss.org/jbossas/downloads/这里下载了jboss-as-distribution-6.0.0.Final.zip下载完成后,将其解压缩后即可完成安装,解压缩后将其放置到一个不带空格的目录(避免不必要的麻烦),同时在“环境变量设置”中设置名为JBOSS_HOME的环境变量,值为J…

    2022年9月28日
    6

发表回复

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

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