跳到正文
源码达人

【算法】统计连续字符的长度

算法 柠檬鱼

需求

输入一个字符串,尝试编程返回其中最长的连续重复字符的长度。例如,输入字符串“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
}