需求
输入一个字符串,尝试编程返回其中最长的连续重复字符的长度。例如,输入字符串“abbbcdeff”,其中最长的连续重复字符组成的子串为“bbb”, 因此需要返回3作为答案。如果输入“hello”,需要返回2作为答案,因为其中最长的连续重复字符组成的子串为“ll”。
思路
本题是一道非常经典的字符串编程题。在编程工程师相关职位的面试中,本题的出场率也非常高。解题思路也比较简单,过程如下:
- 对字符串进行遍历,记录当前遍历到的字符连续出现的次数。
- 遍历到不同的字符后,重置计数。
- 将计数的最大值返回。
实现
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
}