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

赣州网站开发企业建设网站公司

赣州网站开发,企业建设网站公司,如何做网站描述,做音乐网站曲库在哪找文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符&#xff…

文章目录

  • 1.问题描述
  • 2.难度等级
  • 3.热门指数
  • 4.解题思路
  • 参考文献

1.问题描述

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。

提示:

m == s.length
n == t.length
1 <= m, n <= 105
s 和 t 由英文字母组成

2.难度等级

Hard。

3.热门指数

★★★★☆

4.解题思路

问题要求返回字符串 s 中包含字符串 t 的全部字符的最小字串。我们可以将最小子串看成一个窗口,我们称包含 t 全部字母的窗口为「可行窗口」。

所以我们可以尝试用滑动窗口的思想解决这个问题。

在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的 r 指针,和一个用于「收缩」窗口的 l 指针。在任意时刻,只有一个指针运动,而另一个保持静止。我们在 s 上滑动窗口,通过移动 r 指针不断扩张窗口。当窗口包含 t 全部所需的字符后,如果能收缩,我们就收缩窗口直到得到最小窗口。
在这里插入图片描述
如何判断当前的窗口包含所有 t 所需的字符呢?我们可以用一个哈希表表示 t 中所有的字符以及它们的个数,用一个哈希表动态维护窗口中所有的字符以及它们的个数,如果这个动态表中包含 t 的哈希表中的所有字符,并且对应的个数都不小于 t 的哈希表中各个字符的个数,那么当前的窗口是「可行」的。

注意: 这里 t 中可能出现重复的字符,所以我们要记录字符的个数。

时间复杂度: 最坏情况下左右指针对 s 的每个元素各遍历一遍,哈希表中对 s 中的每个元素各插入、删除一次。对 t 中的元素各插入一次。左右指针每次移动都要检查窗口是否「可行」,每次检查是否可行会遍历整个 t 的哈希表。哈希表的大小与字符集的大小有关,设字符集大小为 C,则时间复杂度为O(Cm+n),其中 m 为 s 长度,n 为 t 长度。

空间复杂度: 这里用了两张哈希表作为辅助空间,每张哈希表最多不会存放超过字符集大小的键值对,我们设字符集大小为 C ,则渐进空间复杂度为O(C)

下面以 Golang 为例给出实现。

func minWindow(s string, t string) string {mt := make(map[rune]int)for _, c := range t {mt[c]++}var minl, minr int      // 最小窗口左右下标var winlen int          // 最小窗口长度var l, r int            // 滑动窗口左右下标m := make(map[rune]int) // 窗口内字符数for ; r < len(s); r++ {m[rune(s[r])]++if !cover(m, mt) {continue}for ; l <= r; l++ {m[rune(s[l])]--if !cover(m, mt) {if winlen == 0 || r-l+1 < winlen {minl, minr = l, rwinlen = r - l + 1}// 当前元素被删除,所以滑动窗口起始下标要移到下一位l++break}}}if winlen > 0 {return s[minl : minr+1]}return ""
}func cover(m, mt map[rune]int) bool {for k, v := range mt {if m[k] < v {return false}}return true
}

参考文献

76. 最小覆盖子串 - LeetCode

http://www.15wanjia.com/news/12343.html

相关文章:

  • 自考网站建设与管理资料浙江网站seo
  • wordpress 左右黑白优化网站排名方法教程
  • 设计的网站都有哪些功能搜索网排名
  • 网站内如何做论坛网络营销方式有哪些?
  • 独立站快速建站济宁seo优化公司
  • 昆明网站建设咨询数字营销包括哪六种方式
  • wordpress登陆后台关键词优化排名的步骤
  • 摄影培训网站建设经典软文案例200字
  • 将网站建设列入政府考核内容宁波seo教学
  • 同城生活服务app网站优化搜索排名
  • 做音乐网站的目的和意义seo综合查询国产
  • 帮人做违法网站怎样搭建自己的网站
  • 班级网站设计模板天猫seo搜索优化
  • 阜阳做网站的公司多用户建站平台
  • 专做展厅设计网站长沙seo行者seo09
  • 新乡做网站的公司有那些今日新闻播报
  • 常州高端网站制作公司排名seo教程技术
  • 郑州网站建设 个人工作室百度大搜是什么
  • 济南网站建设模板自动友链网
  • 哪里的佛山网站建设seo搜索引擎优化是通过优化答案
  • 十大免费论文网站seo自学网官方
  • 工程做网站百度推广客户端怎样注册
  • 仿淘宝网站网店运营策划方案
  • 微信公众号怎么做微网站吗北京seo
  • csgo翻硬币网站怎么做网站做优化
  • 自己做网站可以挣钱吗杭州网站搜索排名
  • 哪有做网站的 优帮云网站优化推广教程
  • 东莞网站没计广告代运营
  • 给非吸公司建设网站百度网址安全检测中心
  • 如何建设学校网站佛山百度快照优化排名