792. 匹配子序列的单词数
中等
282

相关企业

给定字符串 s 和字符串数组 words, 返回  words[i] 中是s的子序列的单词个数 。

字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改变其余字符的相对顺序。

  • 例如, “ace” 是 “abcde” 的子序列。

示例 1:

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

Example 2:

输入: s = "dsahjpjauf", words = ["ahjpjau","ja","ahbwzgqnuk","tnmlanowax"]
输出: 2

提示:

  • 1 <= s.length <= 5 * 104
  • 1 <= words.length <= 5000
  • 1 <= words[i].length <= 50
  • words[i]和 s 都只由小写字母组成。

​​​​

通过次数
23.7K

提交次数
47.5K

通过率
49.9%

题解:比较两个字符串s和t,其中一个是另外一个子串的问题,可以使用双指针一次遍历。那么这道题目就是在外面再加一层for循环,遍历完所有的字符串数组就可以了。于是我就提交了,发现超时了。。。。既然超时了,那么就要算法优化,删除一些重复的操作。看着超时的测试用例,我忽然就懂了,因为测试的字符串有很多是重复的,所以增加了一个哈希表来去重,这样再遍历一遍哈希表,就可以通过了。具体看代码,使用table[26]是用来提前结束不匹配的情况的优化。

class Solution {
public:int numMatchingSubseq(string s, vector<string>& words) {int sum=0;int table[26]={0};unordered_map<string,int> Hashmap;for(auto ch:s){table[ch-'a']++;}for(auto str:words){Hashmap[str]++;}for(auto p:Hashmap){string temStr=p.first;int k=0;int sk=0;// 计算是否存在bool flag=true;int temptable[26]={0};for(auto i:temStr){temptable[i-'a']++;if(temptable[i-'a']>table[i-'a']){flag=false;break;}}if(flag){while(k<temStr.size() && sk<s.size()){if(temStr[k]==s[sk]){k++;sk++;}else{sk++;}}if(k>temStr.size()-1){sum+=p.second;}}}return sum;}
};

时间168 ms

击败

63.30%

内存42.1 MB

击败

74.64%

leetcode 792 匹配子序列的单词数(哈希表+双指针)相关推荐

  1. LeetCode 792. 匹配子序列的单词数(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数. 示例: 输入: S = "abcde" ...

  2. 力扣每日一题:792. 匹配子序列的单词数【真没想到是一个二分】

    给定字符串 s 和字符串数组 words, 返回  words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改变其 ...

  3. Leetcode 792. 匹配子序列的单词数

    Leetcode 792. 匹配子序列的单词数 给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符串,可以 ...

  4. Leetcode 792. 匹配子序列的单词数 C++

    Leetcode 792. 匹配子序列的单词数 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数. 示例: 输入: S = "abcde&q ...

  5. LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)

    792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列 转载于:https://www.cnblogs.com/hgli ...

  6. LeetCode每日一题——792. 匹配子序列的单词数

    LeetCode每日一题系列 题目:792. 匹配子序列的单词数 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给定字符串 s 和字符串数组 words, 返回 w ...

  7. LeetCode 0792. 匹配子序列的单词数

    [LetMeFly]792.匹配子序列的单词数 力扣题目链接:https://leetcode.cn/problems/number-of-matching-subsequences/ 给定字符串 s ...

  8. 792. 匹配子序列的单词数

    792. 匹配子序列的单词数 二分搜索 class Solution {public:bool check(string& w, vector<vector<int>> ...

  9. 392.判断子序列 | 792.匹配子序列的单词数

    392. 判断子序列 labuladong 题解思路 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成 ...

最新文章

  1. 贡献思想 + 数论 + 思维(例题 Problem J. Prime Game)
  2. 宽屏企业网站源码中英php_宽屏版大气企业网站源码dede网站源码中英文网站模板SEO...
  3. 3 数组中的重复数字
  4. 【复杂系统迁移 .NET Core平台系列】之认证和授权
  5. SpringCloud之Zuul网关
  6. AVI视频格式的Dvix和Xvid两种不同编码的区别
  7. 企业财务分析方法-杜邦分析法、沃尔评分法、Z值模型
  8. Kafka集群搭建过程(kafka2.5+eagle)
  9. java用于选择结构的关键字_Java结构
  10. 一些常见的Java8 循环实例(筛选、基本函数使用,循环等)
  11. OGNL表达式的入门
  12. 如何让Echarts地图只显示某个省、市、区
  13. vue2的堆叠轮播图 (5张图 错开叠加,来回切换)
  14. C#之AES加密解密
  15. elasticsearch client依赖包下载方法
  16. WeCube开源监控插件Open-monitor介绍
  17. 通信维修专用电源_通信电源的故障维修三例
  18. idl linux运行效率,Linux性能监控之CPU篇
  19. 智能制造生产执行与控制
  20. 论文里的好句子(3)

热门文章

  1. php 求两个日期之间的天数_php计算两个日期之间的天数
  2. HTML5简介及新特性
  3. mysql 主键自增语句_MySQL 自增主键
  4. 使用PN532复制一张新卡(读卡,写卡)(使用上位机)
  5. [摘录]第7章 谈判压力点
  6. Unity 打开关闭外部的exe软件
  7. coot 无法识别DNA/RNA的解决方法
  8. sinx、cscx、cosx、secx以及tanx、cotx图像详解
  9. 2021年茶艺师(初级)考试及茶艺师(初级)考试技巧
  10. oracle 慕课课程_ORACLE数据库技术,中国大学MOOC(慕课)答案公众号搜题