leetcode-792匹配子序列的单词数(桶)

leetcode-792匹配子序列的单词数(桶)原题链接给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。示例:输入: S = “abcde”words = [“a”, “bb”, “acd”, “ace”]输出: 3解释: 有三个是 S 的子序列的单词: “a”, “acd”, “ace”。注意:所有在words和 S 里的单词都只由小写字母组成。S 的长度在 [1, 50000]。words 的长度在 [1, 5000]。words[i]的长度在[1, 50]。题解暴力

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

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

原题链接

给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。

示例:

输入: 
S = "abcde"
words = ["a", "bb", "acd", "ace"]
输出: 3
解释: 有三个是 S 的子序列的单词: "a", "acd", "ace"

注意:

  • 所有在words和 S 里的单词都只由小写字母组成。
  • S 的长度在 [1, 50000]。
  • words 的长度在 [1, 5000]。
  • words[i]的长度在[1, 50]。

题解

  1. 暴力
class Solution { 
   
public:
    int numMatchingSubseq(string s, vector<string>& words) { 
   
        int res = 0;
        for(auto &word : words){ 
   
            int j = 0,len = 0;
            for(int i = 0;i < s.size();i ++){ 
   
                if(word[j] == s[i])len ++,j ++;
            }
            if(len == word.size())res ++;
        }
        return res;
    }
};
  1. 借鉴桶排序,把所有单词的字符按照word[0]放入对应桶,当字符串扫到对应字符的时候就把桶中的单词放入下一个字符对应的桶即可
class Solution { 
   
public:
    int numMatchingSubseq(string s, vector<string>& words) { 
   
        vector<pair<string,int> > v[26];
        int res = 0;
        for(auto &w : words){ 
   
            v[w[0] - 'a'].push_back({ 
   w,0});
        }
        for(int i = 0;i < s.size();i ++){ 
   
            int c = s[i] - 'a';
            vector<pair<string,int> > t = v[c];
            v[c].clear();
            for(auto &a : t){ 
   
                if(a.second == a.first.size() - 1)res ++;
                else v[a.first[a.second + 1] - 'a'].push_back({ 
   a.first,a.second + 1});
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • Server unexpectedly closed network connection的解决

    Server unexpectedly closed network connection的解决(1)apt-getremoveopenssh-server(2)sudoaptinstallopenssh-server(3)sudoservicesshstart(4)ps-aux|grepssh(5)sudoaptinstallopenssh-client(6)工具重连…

    2022年10月21日
    1
  • SpringBoot之SpringApplication初始化

    SpringBoot之SpringApplication初始化SpringApplication的初始化之前已经分析了引导类上的@SpringBootApplication注解,接下来继续分析main方法,只调用了一句SpringApplication.run(SpringbootApplication.class,args),就启动了web容器,我们看看run方法里面做了什么publicstaticConfigurableApplicationContextrun(Class<?>[]primarySources,String[]ar

    2025年8月26日
    7
  • vuejs 和 element 搭建的一个后台管理界面

    vuejs 和 element 搭建的一个后台管理界面

    2021年10月11日
    48
  • 至少使用两种方式运行pycharm_python还是java

    至少使用两种方式运行pycharm_python还是java要!!!下了pycharm但是没下载python也是运行不了的原文链接:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程-知乎工欲善其事,必先利其器。首先我们先来安装Python,在这里安利一下:其实在没有安装Python之前也可以安装Pycharm的,两者并没有什么冲突关系。但是话说回来,如果没有Python编译器,那么Pycharm其实只是个驱壳,即便你编好程序之后,也并不能运行。举个栗子,Python相当于子弹,Pycharm相当于手枪,如果手

    2022年8月29日
    2
  • MySQL的字段类型_mysql数据库字段类型

    MySQL的字段类型_mysql数据库字段类型前言:要了解一个数据库,我们必须了解其支持的数据类型。MySQL支持大量的字段类型,其中常用的也有很多。前面文章我们也讲过int及varchar类型的用法,但一直没有全面讲过字段类型,本篇文章我们将把字段类型一网打尽,讲一讲常用字段类型的用法。常用的字段类型大致可以分为数值类型、字符串类型、日期时间类型三大类,下面我们按照分类依次来介绍下。1.数值类型数值类型大类又可以分为整型、浮点型、…

    2025年9月19日
    4

发表回复

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

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