55561bc4创建于 2022年12月27日历史提交
func minWindow(s string, t string) string {
	start, end := 0, 0
	targetCharacterFrequency := make(map[uint8]int)
	currentCharacterFrequency := make(map[uint8]int)
	distinctCharacterCount := 0
	minSubstring := ""

	for index := range t {
		targetCharacterFrequency[t[index]]++
	}

	for end < len(s) {
		currentCharacterFrequency[s[end]]++
		if targetCharacterFrequency[s[end]] != 0 &&
			targetCharacterFrequency[s[end]] == currentCharacterFrequency[s[end]] {
			distinctCharacterCount++
		}

		for distinctCharacterCount == len(targetCharacterFrequency) {
			if minSubstring == "" {
				minSubstring = s[start:end+1]
			}
			if end - start + 1 < len(minSubstring) {
				minSubstring = s[start:end+1]
			}

			currentCharacterFrequency[s[start]]--
			if currentCharacterFrequency[s[start]] < targetCharacterFrequency[s[start]] {
				distinctCharacterCount--
			}

			start++
		}
		end++
	}

	return minSubstring
}