/*
題目描述;
給定兩個字串s和t,求s中包含t所有字元的最短連續字串的長度,同時要求時間複雜度不得超過o(n)。
示例:輸入是兩個字串s和t,輸出是乙個s字串的子串。
input:s="adobecddebanc",t="abc"
output:"banc"
解題思路;
本題採用滑動視窗進行求解,即兩個指標l和r都是從最左端向最右端移動,且l的位置一定在r的左邊
或重合。
(1)先遍歷t中的字串,找出各個字元出現的個數,儲存在key-value中;
(2)然後遍歷s中字串,每遇到乙個t中的字元,則把對應的個數進行減1,如果這個字元對應的值大於
或等於0,則count++;
(3)若count第一次等於t.size()時,則第一次選中包含所有指定字元的區間,設定為暫時最短的字串。
,然後右移滑動視窗,進行加1,如果右移前最左邊的l字元正是字串t的乙個字元,那麼count就需要進行
減1;*/
c++語言實現
#include #include #include #include using namespace std;
class solution
string minwindow()
/*嘗試右移,獲取最短的字串*/
l++;}}
}return mindow;
}private:
string s,t;
};int main(int argc,char* ar**)
leetcode 581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...
leetcode 581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...
LeetCode581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...