lc-go/solutions/37/q3713/solution.go
2026-02-17 14:25:55 +09:00

35 lines
527 B
Go

package q3713
func longestBalanced(s string) int {
longest := 0
cnt, tmp := [26]int{}, [26]int{}
for i := range len(s) {
copy(cnt[:], tmp[:])
distinct, imbal, maxCnt := 0, 0, 0
for j := i; j >= 0; j-- {
c := s[j] - 'a'
cnt[c]++
if cnt[c] == 1 {
distinct++
imbal++
}
if cnt[c] > maxCnt {
maxCnt = cnt[c]
imbal = distinct - 1
} else if cnt[c] == maxCnt {
imbal--
}
if imbal == 0 {
longest = max(longest, i-j+1)
}
}
}
return longest
}
var _ = longestBalanced