題目
給你乙個字串 s、乙個字串 t,請在字串 s 裡面找出:包含 t 所有字母的最小子串。
示例:
輸入: s = "adobecodebanc", t = "abc"輸出: "banc"
說明:如果 s 中不存這樣的子串,則返回空字串 ""。
如果 s 中存在這樣的子串,我們保證它是唯一的答案。
題解解題思路來自於參考文章。本題採用一種高階雙指標的滑動視窗法+雜湊法進行求解。一般滑動視窗法適用於求解字串匹配問題。具體解法見**注釋。
classsolution
int left = 0;
int right = 0;
mapneed = new hashmap<>();
mapwindow = new hashmap<>();
int len = 0;
int minlen = integer.max_value; //
記錄最小長度
int start = 0; //
記錄最小長度在被查詢字串中的起始位置
for(int i = 0; i < t.length(); ++i)
while(right }
right++;
while(len == need.size())
char c1 =s.charat(left);
if(need.containskey(c1))
}left++;}}
return minlen == integer.max_value ? "" : s.substring(start, start +minlen);
}}
參考:
雜湊錶類題目 Leetcode76題 最小覆蓋子串
給你乙個字串 s 乙個字串 t 請你設計一種演算法,可以在 o n 的時間複雜度內,從字串 s 裡面找出 包含 t 所有字元的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案...
leetcode刷題python之最小覆蓋子串
題目 給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 學到了 之前沒記住又遇到了 新函式 counter 可以直接把字串變成字元 別的也行 的結合 all 判斷列表有沒有空字串或者0,有則返...
LeetCode刷題 76 最小覆蓋子串
給你乙個字串s 乙個字串t,請在字串s裡面找出 包含t所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果s中不存這樣的子串,則返回空字串 如果s中存在這樣的子串,我們保證它是唯一的答案。class solution 建立對映計數 maptemp n...