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

湛江大型网站模板建设廊坊做网站哪家好

湛江大型网站模板建设,廊坊做网站哪家好,seo短视频网页入口引流免费,自己如何做棋牌网站LeetCode 30. 串联所有单词的子串算法对比分析 1. 题目链接 LeetCode 30. 串联所有单词的子串 2. 题目描述 给定一个字符串 s 和一个字符串数组 words,words 中所有单词长度相同。要求找到 s 中所有起始索引,使得从该位置开始的连续子串包含 words 中所…

LeetCode 30. 串联所有单词的子串算法对比分析


1. 题目链接

LeetCode 30. 串联所有单词的子串


2. 题目描述

给定一个字符串 s 和一个字符串数组 wordswords 中所有单词长度相同。要求找到 s 中所有起始索引,使得从该位置开始的连续子串包含 words 中所有单词的某种排列(不限制顺序)。
示例
输入:s = "barfoothefoobarman", words = ["foo","bar"]
输出:[0,9](子串 "barfoo""foobar" 符合条件)。


3. 算法思路

滑动窗口法

  1. 问题转化:将 words 的排列匹配问题转化为固定窗口长度的滑动窗口问题。
  2. 哈希表统计:用 hash1 记录 words 中单词的出现次数,hash2 记录当前窗口内单词的出现次数。
  3. 多起点遍历:由于单词长度固定为 nwSub,需遍历 nwSub 种可能的起始偏移(0 ≤ i < nwSub)。
  4. 窗口动态调整
    • 右指针扩展:每次截取一个单词加入窗口,更新哈希表。
    • 左指针收缩:当窗口内单词数量超过 nw 时,移动左指针。
  5. 结果判断:当窗口内单词数量等于 nw 且所有单词频率匹配时,记录起始索引。

暴力枚举法

  1. 遍历所有子串:枚举所有长度为 nw * nwSub 的子串。
  2. 分割统计:将子串分割为 nw 个单词,统计频率是否与 words 一致。

4. 示例分析

输入:s = "barfoothefoobarman", words = ["foo","bar"]

  1. 暴力枚举法

    • 枚举所有长度为 6 的子串,例如 "barfoo", "arfoot", "rfooth" 等。
    • 对每个子串分割为 ["bar","foo"]["arf","oot"],检查是否与 words 匹配。
  2. 滑动窗口法

    • i=0 时,窗口从 left=0 开始,截取 "bar""foo"count=2,记录索引 0。
    • i=9 时,窗口从 left=9 开始,截取 "foo""bar"count=2,记录索引 9。

5. 边界条件与注意事项
  1. 单词长度相同words 中所有单词长度必须一致。
  2. 空输入处理:若 words 为空或 s 长度不足,直接返回空。
  3. 哈希表更新:需在收缩窗口时及时减少 hash2 的计数,避免无效单词干扰。

6. 代码实现
class Solution 
{
public:vector<int> findSubstring(string s, vector<string>& words) {vector<int> ret;int ns = s.size(), nw = words.size(), nwSub = words[0].size();if (ns < nwSub * nw) return ret;unordered_map<string, int> hash1;for (auto& word : words) hash1[word]++;for (int i = 0; i < nwSub; i++) { // 遍历所有可能的起始偏移unordered_map<string, int> hash2;int left = i, count = 0; // left为窗口左边界for (int right = i; right + nwSub <= ns; right += nwSub) {// 截取当前单词string in = s.substr(right, nwSub);hash2[in]++;// 更新有效计数:仅在当前单词属于hash1且未超过次数时增加countif (hash1.count(in) && hash2[in] <= hash1[in]) count++;// 当窗口内的单词数量超过nw时,收缩左边界while ((right - left) / nwSub + 1 > nw) {string out = s.substr(left, nwSub);if (hash1.count(out) && hash2[out] <= hash1[out]) count--;hash2[out]--;left += nwSub; // 左指针移动一个单词长度}// 若有效计数等于nw,记录起始索引if (count == nw) ret.push_back(left);}}return ret;}
};

在这里插入图片描述


7.暴力枚举法与滑动窗口法对比图表
对比维度暴力枚举法滑动窗口法
核心思想枚举所有长度为 nw * nwSub 的子串,分割后比较单词频率。维护固定窗口长度,动态调整窗口内的单词频率。
时间复杂度O(ns * nw * nwSub)(每个子串需分割并统计频率)。O(ns * nwSub)(每个单词被处理一次)。
空间复杂度O(nw)(存储 words 的哈希表)。O(nw)(存储两个哈希表)。
实现方式双重循环遍历子串,内层循环分割并统计。单层循环扩展右指针,动态调整左指针。
适用场景小规模数据(ns ≤ 1e3, nw ≤ 10)。大规模数据(ns ≤ 1e5)。
优点逻辑简单,直接穷举所有可能性。时间复杂度低,适用于大规模数据。
缺点数据规模大时性能极差(例如 ns=1e4 时需 1e8 次操作)。需处理哈希表的动态更新和边界条件。

文章转载自:

http://fqSDhd5i.rxgnn.cn
http://zo4NL9My.rxgnn.cn
http://DJ6Sb9MD.rxgnn.cn
http://ZuG1zGHg.rxgnn.cn
http://R39xcryz.rxgnn.cn
http://6MWCTgT6.rxgnn.cn
http://hlTi2q9s.rxgnn.cn
http://GjKmwt6v.rxgnn.cn
http://lAVhRy4Q.rxgnn.cn
http://D30C4mux.rxgnn.cn
http://DEXj30mS.rxgnn.cn
http://q889AKa8.rxgnn.cn
http://zA9A7x3M.rxgnn.cn
http://1sJ58zF3.rxgnn.cn
http://jLSm4pS3.rxgnn.cn
http://WH1H6ZPA.rxgnn.cn
http://FybBTi0M.rxgnn.cn
http://no81BUnJ.rxgnn.cn
http://hUW79uVy.rxgnn.cn
http://8I50jXVu.rxgnn.cn
http://0SpwQIO2.rxgnn.cn
http://XY0Kzi7J.rxgnn.cn
http://vC0QWHBz.rxgnn.cn
http://qLncKt0R.rxgnn.cn
http://NUmkGUgP.rxgnn.cn
http://fiAdpdFB.rxgnn.cn
http://ziMdWhHW.rxgnn.cn
http://KxIxgtTu.rxgnn.cn
http://g56cV2n7.rxgnn.cn
http://RHpgOqzG.rxgnn.cn
http://www.dtcms.com/wzjs/663799.html

相关文章:

  • c 网站开发 readonly属性网站设计制作报价图片
  • 网站开发的8个步骤wordpress菜单选项
  • 用阿里云空降怎么建设网站蚌埠网站制作公司哪家好
  • 江苏广泽建设有限公司网站急招网络销售招聘
  • 参考消息官方网站外贸网站建设 深圳
  • 凡科网注册东莞企业网站seo
  • 网站开发前端框架客户关系管理的重要性
  • 购物网站中加减数目的怎么做装修网站排名
  • 石景山区公司网站建设最新新闻热点事件摘抄及评论
  • 免费一键生成个人网站怎么做二手房网站
  • 仓山福州网站建设wordpress更改发布的文章
  • 白云手机网站建设价格网站建设工作自策划实施以来
  • 深圳住房和建设局网站预约网站前台需求文档
  • 新手做网站网站设计维护内容
  • 建立网站后怎样收费游戏网站模板
  • 企业网站建设大概多少钱写字楼装修公司
  • 北京住房投资建设中心网站首做理财网站
  • 网页源码怎么做网站做网站可以找设计公司吗
  • 设计网站的软件简历代写
  • 重庆网站建设去迅法网中医网站建设素材
  • 安徽省建设干部培训学校网站仿淘宝商城网站开源系统
  • 彩票网站 模块不要验证码的广告网站
  • 国外手机html5网站删除西部数码网站管理助手
  • 网上去哪里找做网站的wordpress增强搜索
  • 网站开发和系统开发区别郑州建网站371
  • 网站建设的论文参考文献网站运营现状
  • 设计师接单网站怎样创建自己公司网站
  • 广西免费网站制作泰安seo公司
  • 响应式网站开发工具vs怎么做网站的首页
  • 网站举报网钓鱼网站怎样做