当前位置: 首页 > news >正文

【优选算法】滑动窗口 串联所有单词的⼦串

在这里插入图片描述

算法思路:
如果我们把每⼀个单词看成⼀个⼀个字⺟,问题就变成了找到「字符串中所有的字⺟异位词」。⽆⾮就是之前处理的对象是⼀个⼀个的字符,我们这⾥处理的对象是⼀个⼀个的单词。

class Solution {
public:
    vector<int> findSubstring(string s, vector<string>& words) {
        vector<int> ret;
        unordered_map<string,int> hash1;
        for(auto& s:words) hash1[s]++;

        int len=words[0].size(),m=words.size();
        for(int i=0;i<len;i++)
        {
             unordered_map<string,int> hash2;
            for(int left=i,right=i,count=0;right+len<=s.size();right+=len)
            {
                string in=s.substr(right,len);
                hash2[in]++;
                if(hash2[in]<=hash1[in]) count++;
                if(right-left+1>len*m)
                {
                    string out=s.substr(left,len);
                    if(hash2[out]<=hash1[out]) count--;
                    hash2[out]--;
                    left+=len;
                }
                if(count==m) ret.push_back(left);
            }
        } 
        return ret;
    }
};

相关文章:

  • JBoltAI_SpringBoot如何区分DeepSeek R1深度思考和具体回答的内容(基于Ollama)?
  • 计算机毕业设计SpringBoot+Vue.js手机商城 (源码+文档+PPT+讲解)
  • 图书管理系统框架构建的收获
  • rdiff-backup备份
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 6
  • Java中的大数据流处理框架与技术比较
  • 计算机毕业设计SpringBoot+Vue.js公司日常考勤系统(源码+文档+PPT+讲解)
  • SourceTree配置SSH步骤详解
  • SAP-ABAP:SAP数据库视图(Database View)详解-创建
  • CAN硬件协议详解
  • 怎么排查页面响应慢的问题
  • Nginx系列09(Nginx 与其他服务集成、实战项目)
  • 机器学习:线性回归,梯度下降
  • freertos 学习5--链路状态设置
  • 房屋租赁|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
  • k8s出问题后 应该查看哪些内容
  • QT基础十、表格组件:QTableWidget
  • Text-to-SQL将自然语言转换为数据库查询语句
  • 【网络安全】敏感字段扫描工具(可用于漏洞挖掘、代码审计)
  • 为什么深度学习选择Tensor而非NumPy数组?核心优势深度解析
  • 企业站点/大数据查询
  • 网站建设摊销几年/怎样宣传自己的产品
  • 面对撞库 网站应该怎么做/优化关键词具体要怎么做
  • 做印刷网站公司/广州宣布5条优化措施
  • 网站后台无法访问/怎样创建一个自己的网站
  • 一个独立IP做几个网站比较合适/批量优化网站软件