| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | func checkInclusion(s1 string, s2 string) bool {	m, n := len(s1), len(s2)	if n < m {		return false	}	freq := make([]int, 256)	for _, r := range s1 {		freq[r]++	}	beg, end := 0, -1	cnt := make([]int, 256)	for end < n {		for beg = end + 1; beg < n && freq[s2[beg]] == 0; beg++ {		}		copy(cnt, freq)		for end = beg; end < n; end++ {			ch := s2[end]			if freq[ch] == 0 {				break			}			cnt[ch]--			for cnt[ch] < 0 {				cnt[s2[beg]]++				beg++			}			if isEmpty(cnt) {				return true			}		}	}	if isEmpty(cnt) {		return true	}	return false}func isEmpty(cnt []int) bool {	for i := 'a'; i <= 'z'; i++ {		if cnt[i] != 0 {			return false		}	}	return true}
 |