最小覆盖子串_滑动窗口
生活随笔
收集整理的這篇文章主要介紹了
最小覆盖子串_滑动窗口
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
解題思路
class Solution { public:string minWindow(string s, string t) {vector<int> need(128,0);//用need數(shù)組記錄我們所需要的元素for(char c : t){need[c]++;}int needcount=t.size();int ii=0,jj=0;//定義滑動窗口string res;int length=INT_MAX;for(jj=0;jj<s.size();jj++){char c=s[jj];if(need[c]>0){//判斷該字符是否是我們所需要的needcount--;}need[c]--;//-1/0if(needcount==0){while(ii<jj&&need[s[ii]]<0) {//縮減左窗口,排除多余元素need[s[ii++]]++;//1、ii要右移 2、need[s[ii]]數(shù)組也要釋放}if(jj-ii+1<length&&ii<=jj){//記錄長度,更新結(jié)果length=jj-ii+1;res=s.substr(ii,length);}//ii++尋找下一個滿足條件的滑動窗口need[s[ii++]]++;//1、ii要右移 2、need[s[ii]]數(shù)組也要釋放needcount++;}}return (length==INT_MAX)? "":res;//如果res始終沒被更新過,代表無滿足條件的結(jié)果} };總結(jié)
以上是生活随笔為你收集整理的最小覆盖子串_滑动窗口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无重复字符的最长子串_滑动窗口
- 下一篇: 402.移掉K位数字,使得剩下数字最小