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


相关推荐

  • proxy pac_全局代理和全局直连

    proxy pac_全局代理和全局直连2019独角兽企业重金招聘Python工程师标准>>>…

    2022年10月19日
    2
  • php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」

    php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。typeof’11’…

    2022年10月11日
    2
  • Mybatis原理解析之一 SqlSessionFactory生产(源码解析)

    Mybatis原理解析之一 SqlSessionFactory生产(源码解析)缘起:笔者从业一年有余(此处撸撸胡须,摸摸自己半秃的头发)不经发出感叹:天天写ssm框架搭建下的业务框架,对于数据库操作也使用mybatis。但是扪心自问对于mybatis的使用只是停留在表层,从来没有研究过其原理,于是本着只有变秃才能变强的原则,于是准备研究一下mybatis的框架并再次做出记录。这里笔者对于mybatis的源码分析是在spring环境下进行的。这是笔者第一个研究的框架源…

    2022年6月3日
    70
  • 计算机三级-数据库技术

    计算机三级-数据库技术三级数据库技术知识点总结1数据字典是对系统种各类数据描述的集合,包括数据项,数据结构,数据流,数据存储和处理过程五个部分2数据模型的三要素:数据结构、数据操作和完整性约束3数据库系统:一般由数据库、操作系统、数据库管理系统(及其工具)、应用系统、数据库管理人员和用户构成4数据模型:数据模型是数据库系统的数学形式框架,是数据库系统的核心和基础5数据模型的分类:概念模型,也称信息…

    2022年6月18日
    48
  • 华为OJ机试训练(一)

    华为OJ机试训练(一)

    2022年1月28日
    49
  • C++的就业,和发展方向

    C++的就业,和发展方向原文:C/C++的就业,发展方向_LoongChang_新浪博客http://blog.sina.com.cn/s/blog_78b2ae1c0101d4o9.htmlC++学习路线从学习C++到现在已经有四个年头了,但是从来没有很深入学习,有人说C++是面向对象的编程语言,但是我在这里想说的是,C++是一个多泛型的编程语言,它既可以面向过程,比如我们完全可以用C++写C的代码,这是没问题…

    2022年6月7日
    39

发表回复

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

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