Leetcode 792. 匹配子序列的单词数 C++
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]。
题解
字典树
字典树节点需要中记录下标,我们再构造新节点时,需要保证在之前遍历的节点的下标之后存在当前字母。详细过程见代码
代码
struct Tree{int index;bool isWord;Tree* next[26];Tree(int index = -1){for(int i=0; i<26; i++)next[i] = NULL;isWord = false;this->index = index;}};Tree* root;int numMatchingSubseq(string S, vector<string>& words) {int n = words.size(),len = S.length();unordered_map<string,bool> visit; //记录字符串是否可以被匹配,从而避免重复操作root = new Tree();int ans = 0;for(int i=0; i<n; i++){if(visit.count(words[i]) == 1){ans += visit[words[i]];continue;}Tree* now = root;int j;for(j=0; j<words[i].length(); j++){if(now->next[words[i][j]-'a'] == NULL){ for(int k=now->index+1; k<len; k++){ //之前遍历的节点下标之后找到第一次出现当前字符的下标,从而进行创建新的节点if(words[i][j] == S[k]){Tree* newT = new Tree(k);now->next[words[i][j]-'a'] = newT;break;}}}if(now->next[words[i][j]-'a'] == NULL) break;now = now->next[words[i][j]-'a'];}if(j == words[i].length()){visit[words[i]] = true;now->isWord = true;ans++;}else visit[words[i]] = false; }return ans;}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-matching-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Leetcode 792. 匹配子序列的单词数 C++相关推荐
- LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)
792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列 转载于:https://www.cnblogs.com/hgli ...
- Leetcode 792. 匹配子序列的单词数
Leetcode 792. 匹配子序列的单词数 给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符串,可以 ...
- 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 原题链接:力扣 描 ...
最新文章
- 初创公司谁来当你们的运维
- webservice、WSDL简介
- 手动创建Github pull request
- c++全局监听ctrl s_号称史上最全!134个CAD快捷键强烈来袭,难道你只知道Ctrl+C?...
- 路径规划之 A* 算法
- 加密软件漏洞评测系统_调查:加密货币挖矿仍居恶意软件威胁前列
- cmos存储器中存放了_天津大学姚建铨院士,张雅婷副教授JMCC:具有宽光谱调控特性的阻变存储器...
- 数据挖掘初次接触!学习代码
- 普渡大学计算机硕士申请条件,普渡大学计算机科学硕士专业申请要求
- select - I/O多路复用
- java rcfile,hsqldb sqltool rcfile不起作用
- std::remove_if
- 电话机器人源码,语音电话机器人
- VB认识强大的ActiveX控件
- 时间计算题100道_【高中政治】选择题里面的计算题怎么办(汇率篇)
- 使用Kuboard spray部署Kubernetes 1.24.3 集成Harbor私有镜像库
- 新手小白建议收藏,美女剪30条视频,在西瓜头条赚了3000元
- NISP-SO网络安全运维是什么?安全运维工程师
- Unity地图分割组合时出现接缝的处理办法
- 一个博士生接受怎样的训练才算是完整、全面的科研训练?
热门文章
- gitflow使用指南
- 各种Android ui 开源框架
- 3550m2 重新linux系统,kgdb+Qemu-KVM调试环境建立方法和所需的相关文件
- mac 使用ffmpeg命令合成MP4和srt字幕
- pixhawk计算机无法识别,PIXHAWK教程 3.1.2 连接你的遥控输入和电机(Pixhawk)
- deconstructSigs|探寻cosmic的独特“气质”-mutation signature !
- mysql修改100条数据_sql 修改前100条数据库
- Delphi复制HID、ID门禁卡源码
- 计算机二级c语言报名照片怎么调,报考计算机二级时对于照片的要求有哪些
- 学计算机英语要去拼六级吗,拼搏两个月 大学英语六级终于考到580分