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

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

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

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

示例 1:

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

示例 2:

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

提示:

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

我的想法:
肯定是暴力了
1.循环遍历 words ,搞个布尔型的 flag 初始值为False,再循环遍历每个单词.当对应的字符在 s 里的时候 flag = True,继续循环;
当对应的字符不在 s 里的时候 flag = False,跳出当前循环;
遍历完一个单词判断一下 flag ,当 flag 为 True 的时候,返回值 + 1。
return 返回值。

class Solution:def numMatchingSubseq(self, s: str, words: List[str]) -> int:returnnum = 0for word in words:flag = Falsefor c in word:if c in s:flag = Trueelse:flag = Falsebreakif flag :returnnum += 1return returnnum

然后哈哈,测试案例都没过

解答错误 38 / 53 个通过的测试用例
输入 s = “abcde” words =[“a”,“bb”,“acd”,“ace”]
输出 4
预期结果 3

想了一下肯定是 words 中的 “bb” 不符合题意了。

2.进行改进
举个例子
s = “abcde”
word = “bb”
使用个 j,初始为0 判断第一个字符 b 在不在 s[j:]中,如果在的话,取出 s 中对应 b 字符的位置。并使用 j 存下,j += s[j:].index©
-abcde-
bb
这之后 j += 1,相当于指向了c

遍历到第二个字符 b 的时候,判断 b 在不在 s[j:] 中
ab -cde-
bb
发现不在,flag = False, 跳出循环

class Solution:def numMatchingSubseq(self, s: str, words: List[str]) -> int:returnnum = 0for ch in words:j = 0flag = Falsefor c in ch:if c in s[j:]:j += s[j:].index(c)flag = Truej += 1continueelse:flag = Falsebreakif flag :returnnum += 1return returnnum

就是有点慢,但是 ac 了

粘一下其他人的题解:
官方 - 二分查找/多指针

ylb - 分桶 + 二分查找

【宫水三叶】预处理 + 哈希表 + 二分

Leetcode 792. 匹配子序列的单词数相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. leetcode 792. Number of Matching Subsequences | 792. 匹配子序列的单词数(Java)

    题目 https://leetcode.com/problems/number-of-matching-subsequences/ 题解 一看数据规模,普通暴力解法肯定超时了.想了半天怎么用 Trie ...

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

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

  9. ​力扣解法汇总792. 匹配子序列的单词数

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

最新文章

  1. 使用spark计算文档相似度
  2. 【数据挖掘】中文期刊点评
  3. thymeleaf公共页面元素抽取 || 引入片段的时候传入参数
  4. python之列表、字典、集合
  5. Linux中添加pycharm源,linux下python+pycharm安装
  6. win7装mysql5.5_Win7下mysql5.5安装图文教程
  7. 如何在SQL Server数据库中加密数据
  8. 容器编排技术 -- Kubernetes是什么?
  9. Sublime的Package Control 及 Emmet插件的安装,Tab键快速html和css代码
  10. WinINet function(2)Request
  11. (64)Verilog HDL多模块重复例化
  12. java监听鼠标接口实现_自定义Java鼠标监听器?
  13. css设置背景透明度
  14. Java开发必备软件安装大全(建议学生党初学Java开发收藏)
  15. springMVC文件的上传和页面静态化技术
  16. 报错Unknown custom element: <组件名> - did you register the component correctly?的原因及解决办法
  17. Qt数据库应用21-数据分组导出
  18. 李文胜oracle,2014年下期解放学校防火演练方案.doc
  19. 干货盘点!推荐程序员日常使用的5款工具软件
  20. Windows 系统如何定时运行 Python 程序或脚本

热门文章

  1. 用ffmpeg在Windows11下的命令行模式推流到B站直播间
  2. IOS点击任意屏幕收起键盘
  3. C语言中的NULL到底是什么?又不是什么?有什么用?怎么用?
  4. c语言文件夹怎么设置密码,简单的文件加密(初学者进)
  5. 怎么使用远程php文件的函数调用函数,一个读取远程文件的PHP函数
  6. linux 下录屏的软件
  7. 云展网PDF合并工具 v1.1.0 官方免费版
  8. 买ipad有必要买苹果pencil吗?平价的ipad电容笔推荐
  9. python名片生成二维码 无线网连接
  10. C语言编译键盘钢琴,键盘小钢琴[C语言][自制]