leetcode76 最小覆蓋子串

2021-10-01 07:16:26 字數 1021 閱讀 7605

給你乙個字串 s、乙個字串 t,請在字串 s 裡面找出:包含 t 所有字母的最小子串。

示例:輸入: s = "adobecodebanc", t = "abc"

輸出: "banc"

說明:如果 s 中不存這樣的子串,則返回空字串 ""。

如果 s 中存在這樣的子串,我們保證它是唯一的答案。

思路:雙指標,兩個指標中間代表乙個字串。

都往右邊走,滿足條件就左指標向右(縮),不滿足條件就右指標向右(擴)

public string minwindow(string s, string t) 

int left = 0; // 左指標

int right = 0; // 右指標

int ans_left = 0; // 儲存最小視窗的左邊界

int ans_right = -1; // 儲存最小視窗的右邊界

int ans_len = integer.max_value; // 當前最小視窗的長度

int count = t.length();

// 遍歷字串 s

while (right < s.length())

// 開始移動左指標,減小視窗

while (count == 0)

// 得到左指標的字母

char key = s.charat(left);

// 因為要把當前字母移除,所有相應次數要加 1

map[key]++;

//此時的 map[key] 大於 0 了,表示缺少當前字母了,count++

if (map[key] > 0)

left++; // 左指標右移

}// 右指標右移擴大視窗

LeetCode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 字串和雜湊表的問題。hashmap來儲存t字串中個字母元素的出現次數,left right記錄當前子字串的左右下標值,min minleft ...

leetcode 76 最小覆蓋子串

這道題我使用了很笨的方式花了好久解決了,但是時間複雜度太度,只看網上檢視原始碼,不得不說網上的答案基本都是一樣的,但是對於基礎相對薄弱的我來說這些 看起來很是費勁,還用要加強c 基礎的練習才行。思路相對來說不是很難 1 首先構架t字串的hash表,因為字元與ascii碼較好的關係,使用vector陣...

leetcode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。典型雙指標滑動串列埠題目,先將t建dict,然後...