Leetcode 792. 匹配子序列的单词数
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. 匹配子序列的单词数相关推荐
- LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)
792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列 转载于:https://www.cnblogs.com/hgli ...
- Leetcode 792. 匹配子序列的单词数 C++
Leetcode 792. 匹配子序列的单词数 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数. 示例: 输入: S = "abcde&q ...
- 392.判断子序列 | 792.匹配子序列的单词数
392. 判断子序列 labuladong 题解思路 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成 ...
- LeetCode每日一题——792. 匹配子序列的单词数
LeetCode每日一题系列 题目:792. 匹配子序列的单词数 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给定字符串 s 和字符串数组 words, 返回 w ...
- LeetCode 0792. 匹配子序列的单词数
[LetMeFly]792.匹配子序列的单词数 力扣题目链接:https://leetcode.cn/problems/number-of-matching-subsequences/ 给定字符串 s ...
- 792. 匹配子序列的单词数
792. 匹配子序列的单词数 二分搜索 class Solution {public:bool check(string& w, vector<vector<int>> ...
- leetcode 792. Number of Matching Subsequences | 792. 匹配子序列的单词数(Java)
题目 https://leetcode.com/problems/number-of-matching-subsequences/ 题解 一看数据规模,普通暴力解法肯定超时了.想了半天怎么用 Trie ...
- 力扣 792. 匹配子序列的单词数
题目 给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改 ...
- 力扣解法汇总792. 匹配子序列的单词数
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
最新文章
- 使用spark计算文档相似度
- 【数据挖掘】中文期刊点评
- thymeleaf公共页面元素抽取 || 引入片段的时候传入参数
- python之列表、字典、集合
- Linux中添加pycharm源,linux下python+pycharm安装
- win7装mysql5.5_Win7下mysql5.5安装图文教程
- 如何在SQL Server数据库中加密数据
- 容器编排技术 -- Kubernetes是什么?
- Sublime的Package Control 及 Emmet插件的安装,Tab键快速html和css代码
- WinINet function(2)Request
- (64)Verilog HDL多模块重复例化
- java监听鼠标接口实现_自定义Java鼠标监听器?
- css设置背景透明度
- Java开发必备软件安装大全(建议学生党初学Java开发收藏)
- springMVC文件的上传和页面静态化技术
- 报错Unknown custom element: <组件名> - did you register the component correctly?的原因及解决办法
- Qt数据库应用21-数据分组导出
- 李文胜oracle,2014年下期解放学校防火演练方案.doc
- 干货盘点!推荐程序员日常使用的5款工具软件
- Windows 系统如何定时运行 Python 程序或脚本
热门文章
- 用ffmpeg在Windows11下的命令行模式推流到B站直播间
- IOS点击任意屏幕收起键盘
- C语言中的NULL到底是什么?又不是什么?有什么用?怎么用?
- c语言文件夹怎么设置密码,简单的文件加密(初学者进)
- 怎么使用远程php文件的函数调用函数,一个读取远程文件的PHP函数
- linux 下录屏的软件
- 云展网PDF合并工具 v1.1.0 官方免费版
- 买ipad有必要买苹果pencil吗?平价的ipad电容笔推荐
- python名片生成二维码 无线网连接
- C语言编译键盘钢琴,键盘小钢琴[C语言][自制]