滑动容器类型运用还不是很熟练,特记录一下,用于以后温习。

原题链接

题目描述:

给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量

golang示例代码

 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
func maxPower(s string) int {
    // 滑动窗口
    length := len(s)
    if length <= 1 {
        return length
    }
    max := 1
    i := 0
    j := 0
    for j < length {
        // 不相等时,左边界等于之前的右边界,右边界加1
        if s[i] != s[j] {
            i = j
            j += 1
        } else {
            // 相等时,左边界保持不动,将窗口扩大,右边界加1
            j += 1
        }
        // 更新最大值,j - i就是窗口大小
        if max < j - i {
            max = j - i
        }
    }
    return max
}