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

【剑斩OFFER】算法的暴力美学——最小覆盖字串

一、题目描述

二、算法原理

思路:滑动窗口 + 双哈希表

我们可以统计 t 中每个字母的种类,不是个数,当我们遍历的 s 字符串时,我们也要定义一个 count 来记录符合 t 的有效字符,当 hash_s[ A ] == hash_t[ A ] ,count++,当 count == t 中每个字母的种类时,此时就是符合要求的字符串,但是我们要长度最小的字符串,所以我们还要定义两个变量:begin:有效字符串的起始下标,minlen :最小的有效字符串的个数;当 count == t 中每个字母的种类时,我们就要更新 begin 和 minlen 。

三、代码实现

class Solution {
public:string minWindow(string s, string t) {int kinds = 0;char hash1[128] = {0};for(auto e : t) if(hash1[e]++ == 0) kinds++;int count = 0;char hash2[128] = {0};int minlen = INT_MAX, begin = -1;for(int right = 0,left = 0; right < s.size();right++){char in = s[right];hash2[in]++;if(hash2[in] == hash1[in]) count++;while(count == kinds){if(minlen > right - left + 1) {minlen = right - left + 1;begin = left;}char out = s[left];if(hash2[out] == hash1[out]) count--;hash2[out]--;left++;}}if(begin == -1) return "";else return s.substr(begin,minlen);}
};

解题过程中的总结:不能使用容器:unordered_map 来记录每个字母的种类,因为当后面的我们判断 hash[out] == hash1[out] 时,此时容器的 size 会增加。

http://www.dtcms.com/a/578593.html

相关文章:

  • 全屏网站模板制作教程国外网站需要备案吗
  • 免费做网站有哪些家SaaS网站可以做seo嘛
  • 14:C++:二叉搜索树
  • 「日拱一码」142 Lasso调参注意事项与技巧
  • 【OTA专题】1 OTA加密升级总览
  • 针对编程面试和算法题的基础书籍
  • 10.大模型Agent介绍与应用
  • 兵团建设环保局门户网站中交通力建设股份有限公司网站
  • seo网站程序手机网站生成app客户端
  • 做旅游网站的论文wordpress公告模板
  • 博客登陆wordpress廊坊企业网站排名优化
  • 【LLaVA-NeXT】请问,这种“auto分配”的行为具体是哪一个库的API实现的呢
  • Riverpod框架内部实现原理剖析
  • 图解Redis面试篇
  • 网站首页设计风格wap网站源码下载
  • 获取泛型信息及获取注解信息
  • 会展免费网站模板网站优化课程
  • 【赵渝强老师】Redis数据的迁移
  • Rust编程学习 - 为什么说Cow 代表的是Copy-On-Write, 即“写时复制技术”,它是一种高效的 资源管理手段
  • Rust开发完全指南:从入门到与Python高效融合
  • 石家庄免费建站模板我不想找之前做网站的续费
  • 商城网站模板 免费五个跨境电商平台
  • 无人设备遥控器之数字图传技术
  • 哪个网站用织梦做的2017网站开发就业前景
  • 网站设计公司深圳ppt的网站导航栏怎么做的
  • React中的componentWillUnmount 使用
  • 培训型网站建设中华建设网站
  • 大型网站建设公司推荐店面设计餐饮
  • 中山品牌网站建设推广注册域名成功后怎样建设网站
  • 化妆品网页设计模板素材做网站优化用什么软件