74th LeetCode Weekly Contest Valid Number of Matching Subsequences
Given string S
and a dictionary of words words
, find the number of words[i]
that is a subsequence of S
.
words
S
Note:
- All words in
words
andS
will only consists of lowercase letters. - The length of
S
will be in the range of[1, 50000]
. - The length of
words
will be in the range of[1, 5000]
. - The length of
words[i]
will be in the range of[1, 50]
.
问S中有多少符合words里面的单词(可以不连续哦)
当然是二分啊,我们保存S中字母的位置,对于每个words我们都查找字母的位置,然后+1一位继续找
1 class Solution { 2 public: 3 int numMatchingSubseq(string S, vector<string>& words) { 4 int num=0; 5 vector<int>vec[50000]; 6 int len=S.size(); 7 for(int i=0;i<len;i++){ 8 vec[S[i]-'a'].push_back(i); 9 } 10 for(auto word:words){ 11 int add=0; 12 int wordLen=word.size(); 13 int flag=1; 14 // cout<<word<<endl; 15 for(int i=0;i<wordLen;i++){ 16 if(vec[word[i]-'a'].size()==0){ 17 flag=0; 18 break; 19 } 20 auto it=lower_bound(vec[word[i]-'a'].begin(),vec[word[i]-'a'].end(),add); 21 if(it==vec[word[i]-'a'].end()){ 22 flag=0; 23 break; 24 } 25 add=(*it); 26 add++; 27 // cout<<add<<endl; 28 } 29 if(flag){ 30 num++; 31 } 32 } 33 return num; 34 } 35 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~