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


相关推荐

  • WebSocket快速上手

    WebSocket快速上手文章目录WebSocket快速上手1.WebSocket是什么?1.1.WebSocket连接过程1.2.WebSocket与HTTP对比1.3.WebSocket协议2.快速上手2.1服务端2.2客户端2.2.1浏览器客户端2.2.2Java客户端WebSocket快速上手1.WebSocket是什么?WebSocket建立在TCP协议之上,并且与HTTP协议有着良好的…

    2022年7月27日
    1
  • 高级C/C++编译技术之读书笔记(三)之动态库设计

    本节思维导图1.关于-fPIC编译器选项1.1-fPIC代表什么“PIC”是位置无关代码(Position-independentCode)的缩写,说到位置无关代码,我们会立马想到加载重定

    2021年12月28日
    41
  • 负采样的理解[通俗易懂]

    负采样的理解[通俗易懂]我对负采样理解来自于word2vec算法;比如说 love和me两个单词;使用特殊思维模式;假设整个词汇表只有100个单词;love表示成one-hot向量;me表示成one-hot向量;模型输入为love的one-hot向量;模型输出为me的one-hot向量;假设模型的神经网络结构为100*10*100;输出层100个;输出层中除了me对应位置的1外,其他全是0;称…

    2022年6月24日
    40
  • KVM查看虚拟机的分区内容(4)

    KVM查看虚拟机的分区内容(4)

    2021年9月12日
    94
  • 什么是404页面,如何正确设置制作404页面

    什么是404页面,如何正确设置制作404页面
    什么是404页面?
      404网页是用户尝试访问网站不存在的网页(由于用户点击了损坏的链接、网页已被删除或用户输入了错误的网址)时看到的页面。之所以称为404网页,是因为针对丢失网页的请求,网络服务器会返回404HTTP状态代码,表明该网页未找到。
    404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。
    404对搜索引擎优化seo的影响
      搜索引擎通过HTTP状态码来识别网页的状态。当

    2022年7月27日
    11
  • JUC并发知识_并行与并发

    JUC并发知识_并行与并发文章目录lock和synchronized的区别Condition集合类的并发问题Callablelock和synchronized的区别synchronized 自动释放所,lock必须手动释放synchronized 如果获取不到锁就一直会等待下取,lock可以不用(trylock()方法)lock是可中断锁,而synchronized 不是可中断锁(tryLock(long timeout,TimeUnit unit)方法)synchronized 是可重入锁,lock也是可重入锁可

    2022年8月8日
    3

发表回复

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

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