日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

双指针算法之滑动窗口 | 力扣76.最小覆盖字串

發(fā)布時(shí)間:2025/3/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双指针算法之滑动窗口 | 力扣76.最小覆盖字串 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 本文講解力扣76.最小覆蓋字串問(wèn)題
  • 主要用到的是滑動(dòng)窗口的思想


目錄

    • 76.最小覆蓋字串
      • 題目:
      • 分析:
      • 步驟描述:
      • 復(fù)雜度分析:
      • 結(jié)果

76.最小覆蓋字串

題目:

給定字符串 S 以及字符串 T ,求 S 種 包含 T 的最短連續(xù)子字符串的長(zhǎng)度

給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。
注意:如果 s 中存在這樣的子串,我們保證它是唯一的答案。

要求 時(shí)間復(fù)雜度 ≤ O(n)

分析:

首先,返回的是字符串類(lèi)型,想到使用 substr函數(shù) 截取對(duì)應(yīng)的子串

使用數(shù)組,映射 T 中的字符情況,標(biāo)記字符存在與否、對(duì)應(yīng)的數(shù)量

使用滑動(dòng)窗口的解法,可以解決大部分字符串匹配的問(wèn)題~

步驟描述:

  • L R 指針。都從最左端到最右端移動(dòng),且 L <= R,L 只能在R 左邊或者重合
  • 挪動(dòng)指針,根據(jù)映射情況,找到滿(mǎn)足要求的窗口
  • 找到一個(gè)窗口,繼續(xù)挪動(dòng),不影響結(jié)果的情況下尋找其它滿(mǎn)足要求的窗口,取最小值
  • 挪動(dòng)的時(shí)候,注意 L 指針會(huì)更新,所以會(huì)“拋出”窗口原來(lái)最左邊的字符,需要處理“如果窗口拋出的是T中存在的某個(gè)字符”這種情況
class Solution { public:string minWindow(string s, string T) {vector<int> chars(128,0); vector<bool> flag(128,false); // 記錄字符是否在 T 中存在// 映射 T 中的字符情況for(int i = 0; i < T.size(); ++i){flag[T[i]] = true;++chars[T[i]]; // 字符的數(shù)量}int cnt =0; // 判斷 T的字符是不是都找完了int l=0,min_l=0;int min_size=s.size()+1;for (int r = 0; r < s.size(); ++r) {if (flag[s[r]]) {if (--chars[s[r]] >=0) {++cnt;}// 窗口包含了全部字符之后, L 指針繼續(xù)后移,繼續(xù)尋找其它滿(mǎn)足情況,找最小窗口while (cnt == T.size()) {if (r-l+1 < min_size) {min_l = l;min_size = r-l+1;}// 窗口后挪,左邊會(huì)“拋出”// 如果拋出的是T中存在的某個(gè)字符if (flag[s[l]] && ++chars[s[l]] >0) {--cnt;}++l;}}}return min_size >s.size()?"":s.substr(min_l, min_size);} };

復(fù)雜度分析:

雖然代碼使用了 for 和 while嵌套,但是 while 只是用來(lái)滑動(dòng)的,所以時(shí)間復(fù)雜度是滿(mǎn)足要求的 O(n)

結(jié)果

總結(jié)

以上是生活随笔為你收集整理的双指针算法之滑动窗口 | 力扣76.最小覆盖字串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。