76最小覆蓋子串

2021-10-03 14:52:55 字數 1749 閱讀 3723

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

示例:

輸入: s = 「adobecodebanc」, t = 「abc」

輸出: 「banc」

說明:

滑動視窗解法。

/**

* hashmap方式

** @param s

* @param t

* @return

*/public

static string minwindow

(string s, string t)

int left =

0, right =

0, match =

0, start =

0, minlen = integer.max_value;

mapwindows =

newhashmap

<

>()

; map

needs =

newhashmap

<

>()

;for

(char c : t.

tochararray()

)char

chars = s.

tochararray()

;while

(right < s.

length()

)}right++

;//符合條件,開始縮小視窗

while

(match == needs.

size()

)char c2 = chars[left];if

(needs.

containskey

(c2))if

(tmp ==0)

else

} left++;}

}return minlen == integer.max_value ?

"": s.

substring

(start, start + minlen);}

/** * 陣列方式

** @param s

* @param t

* @return

*/public

static string minwindow1

(string s, string t)

int left =

0, right =0;

int plength = t.

length()

;//候選字元數

int match =0;

int minlength = s.

length()

+1; string result ="";

while

(right < s.

length()

) right++

;//滑動視窗中的字串包含pattern,開始縮小視窗

while

(match == plength)

//找出長度最短符合條件的結果

if(right - left < minlength)

window[ch]

= window[ch]-1

; left++;}

}return result;

}

76 最小覆蓋子串

題目 給你乙個字串s 乙個字串t,請在字串s裡面找出 包含t所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 方法一 自己寫的,但是leetcode上超時 defminwindow s,t m 0 all in false iflen t 0or len s...

76 最小覆蓋子串

給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。class solution int ma...

76 最小覆蓋子串

給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字元的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。使用滑動視窗的思想,我們可以用乙個map來...