031_最小覆盖子串
知识点:滑动窗口
LeetCode第七十六题:https://leetcode-cn.com/problems/minimum-window-substring/submissions
语言:GoLang
func minWindow(s string, t string) string {
tLen := len(t)
sLen := len(s)
tChars := map[byte]int{}
window := map[byte]int{}
for i := 0; i < tLen; i++ {
tChars[t[i]]++
}
start, minLen, count, left, right := 0, sLen + 1, 0, 0, 0
for right < sLen {
rightChar := s[right]
if window[rightChar] < tChars[rightChar] {
count++
}
window[rightChar]++
right++
for count == tLen {
if right - left < minLen {
minLen = right - left
start = left
}
leftChar := s[left]
if window[leftChar] <= tChars[leftChar] {
count--
}
window[leftChar]--
left++
}
}
if minLen == sLen + 1 {
return ""
}
return s[start: start + minLen]
}

浙公网安备 33010602011771号