2981. 找出出现至少三次的最长特殊子字符串 I

找出出现至少三次的最长特殊子字符串 I

解法一: 哈希, 排序

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
func maximumLength(s string) int {
numList := make([][]int, 26)
n := len(s)
count := 0
for i := 0; i < n; i++ {
count++
if i == n-1 || s[i] != s[i+1] {
numList[s[i]-'a'] = append(numList[s[i]-'a'], count)
count = 0
}
}
ans := 0
for _, list := range numList {
if len(list) == 0 {
continue
}
sort.Slice(list, func(i, j int) bool {
return list[i] >= list[j]
})
list = append(list, 0, 0)
ans = max(ans, max(list[0]-2, max(min(list[0]-1, list[1]), list[2])))
}
if ans == 0 {
return -1
}
return ans
}
作者

wuhunyu

发布于

2024-05-29

更新于

2025-01-15

许可协议