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 and S 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 };
复制代码

 

posted @   樱花落舞  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示