您现在的位置是:主页 > news > 淄博市网站开发/广告代理公司

淄博市网站开发/广告代理公司

admin2025/5/5 3:46:33news

简介淄博市网站开发,广告代理公司,山西网站建设开发,优客工场 网站开发滑动窗口基础滑动窗口常用来解决求字符串子串问题,借助map和计数器,其能在O(n)时间复杂度求子串问题。滑动窗口和双指针(Two pointers)有些类似,可以理解为往同一个方向走的双指针。常用滑动窗口代码框架如下://3. Longest Substr…

淄博市网站开发,广告代理公司,山西网站建设开发,优客工场 网站开发滑动窗口基础滑动窗口常用来解决求字符串子串问题,借助map和计数器,其能在O(n)时间复杂度求子串问题。滑动窗口和双指针(Two pointers)有些类似,可以理解为往同一个方向走的双指针。常用滑动窗口代码框架如下://3. Longest Substr…

3fa057d5abc686f945b7f0b021de57e0.png

滑动窗口基础

滑动窗口常用来解决求字符串子串问题,借助map和计数器,其能在O(n)时间复杂度求子串问题。滑动窗口和双指针(Two pointers)有些类似,可以理解为往同一个方向走的双指针。常用滑动窗口代码框架如下:

    //3. Longest Substring Without Repeating Charactersint lengthOfLongestSubstring(string s) {vector<int> v(128,0);  //用于对窗口内的各个字符计数int begin=0,end=0,res=0;  //begin,end标识窗口的头尾int cnt=0;  //窗口计数器while(end<s.length()){if(v[s[end++]]++>0) cnt++;  //end++右侧窗口往右扩展//检测到不满足条件时(如这里出现重复字符),begin++左侧窗口往右缩小while(cnt>0) if(v[s[begin++]]-->1) cnt--;  res=max(res,end-begin);}return res;}

以"pwwkew"为例,以上滑动窗口执行过程图示如下:

84ea61fe9adb8ff65a6678be2ae7d272.png
滑动窗口执行过程(中间有步骤省略)

相关LeetCode题:

3. Longest Substring Without Repeating Characters 题解

438.Find All Anagrams in a String 题解

159. Longest Substring with At Most Two Distinct Characters 题解

340. Longest Substring with At Most K Distinct Characters 题解

992. Subarrays with K Different Integers 题解

76. Minimum Window Substring 题解 讨论

滑动窗口内的数据还可以存入更复杂一些的数据结构中,以利用这些数据结构的特性更方便地对数据进行处理,例如以下题目解法中用到deque/multiset处理数据。

相关LeetCode题:

239. Sliding Window Maximum 题解

480. Sliding Window Median 题解