給你乙個字串 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來...