LeetCode题解:套用模板解决 滑动窗口 问题
初始化两个哈希表,一个记录 移动右指针,逐个字符加入窗口,更新当前窗口的频率表。 检查当前窗口的频率是否与 如果匹配,进入收缩窗口的循环,移动左指针,更新频率表,并记录最小的子串长度。 继续移动右指针,直到满足条件为止。 初始化哈希表: 滑动窗口指针: 扩展窗口:移动 检查频率匹配:当窗口中的字符频率与 收缩窗口:移动 返回结果:当循环结束后,返回找到的最小子串,若未找到则返回空字符串。
发布日期:2021-04-30 21:01:32
浏览次数:115
分类:精选文章
本文共 1822 字,大约阅读时间需要 6 分钟。
要解决这个问题,我们可以使用滑动窗口算法来找到字符串 s 中包含字符串 t 所有字符的最小子串。以下是详细的解决方案:
方法思路
我们可以使用滑动窗口技术来解决这个问题。滑动窗口的基本思想是用两个指针来控制窗口的大小,右指针向右扩展窗口,左指针向左收缩窗口。当窗口中的字符频率与 t 中的字符频率匹配时,窗口中的字符就是 t 的一个排列。
具体步骤如下:
t 中字符的频率,另一个记录当前窗口中的字符频率。t 的频率匹配,如果匹配,记录窗口的起始和结束位置。解决代码
#include#include using namespace std;class Solution {public: string minWindow(String s, String t) { HashMap need, window; for (char c : t.toCharArray()) { need[c] = need.getOrDefault(c, 0) + 1; } int left = 0, right = 0; int valid = 0; int start = 0, len = INT_MAX; while (right < s.length()) { char c = s.charAt(right); right++; if (need.containsKey(c)) { window[c] = window.getOrDefault(c, 0) + 1; if (window[c] == need[c]) { valid++; } } while (valid == need.size()) { if (right - left < len) { start = left; len = right - left; } char c1 = s.charAt(left); left++; if (need.containsKey(c1)) { if (window.get(c1) == need.get(c1)) { valid--; } window[c1]--; } } } return len == INT_MAX ? "" : s.substring(start, start + len); }};
代码解释
need 表示 t 中每个字符的频率,window 表示当前窗口中每个字符的频率。left 和 right 指针控制窗口的左右边界。right 指针,逐个字符加入窗口,并更新 window 表。t 的匹配时,进入收缩窗口的循环。left 指针,更新频率表,并记录最小的子串长度。这个方法的时间复杂度是 O(n),其中 n 是字符串 s 的长度,空间复杂度是 O(n) 用于存储哈希表。
发表评论
最新留言
表示我来过!
[***.240.166.169]2026年05月23日 20时00分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP的威胁函数与PHP代码审计实战
2023-03-01
PHP的引用举例
2023-03-01
PHP相关代码
2023-03-01
RabbitMQ
2023-03-01
php知识点记录
2023-03-01
PHP第三方登录—OAuth2.0协议
2023-03-01
php筛选js,php如何多条件筛选js代码
2023-03-01
R730服务器做了raid的硬盘,插在R720上面可以用吗?
2023-03-01
PHP类数组式访问(ArrayAccess接口)
2023-03-01
PHP系列:浅谈PHP中isset()和empty() 函数的区别
2023-03-01
PHP索引数组unset的坑-array_values解决方案
2023-03-01
PHP索引数组排序方法整理(冒泡、选择、插入、快速)
2023-03-01
PHP线程安全和非线程安全
2023-03-01
R3LIVE开源项目常见问题解决方案
2023-03-01
php缃戠珯,www.wfzwz.com
2023-03-01
php缓存查询函数
2023-03-01
php编写TCP服务端和客户端程序
2023-03-01
php编码规范
2023-03-01
PHP编码规范-PSR1、psr2 /psr3 psr4
2023-03-01