需求

输入一个字符串,尝试编程返回其中最长的连续重复字符的长度。例如,输入字符串“abbbcdeff”,其中最长的连续重复字符组成的子串为“bbb”, 因此需要返回3作为答案。如果输入“hello”,需要返回2作为答案,因为其中最长的连续重复字符组成的子串为“ll”。

思路

本题是一道非常经典的字符串编程题。在编程工程师相关职位的面试中,本题的出场率也非常高。解题思路也比较简单,过程如下:

  1. 对字符串进行遍历,记录当前遍历到的字符连续出现的次数。
  2. 遍历到不同的字符后,重置计数。
  3. 将计数的最大值返回。

实现

package chapter09

func maxPower(str string) (max int) {

    // 当前循环的字符
    var c string

    // 当前循环的字符个数
    var count int

    for _, v := range str {
        s := string(v)
        if c == "" {
            c = s
            count = 1
        } else {
            if c == s {
                count++
            } else {
                c = s
                count = 1
            }
        }
        if count > max {
            max = count
        }
    }

    return
}