1. 问题描述:
给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。
示例 1:
输入:s = "leetcode"
输出:2
解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。
示例 2:
输入:s = "abbcccddddeeeeedcba"
输出:5
解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。
示例 3:
输入:s = "triplepillooooow"
输出:5
示例 4:
输入:s = "hooraaaaaaaaaaay"
输出:11
示例 5:
输入:s = "tourist"
输出:1
提示:
1 <= s.length <= 500
s
只包含小写英文字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/consecutive-characters
2. 思路分析:
分析题目可以知道我们最终要求解的是连续相同的字符出现的最大次数,我们其实可以在遍历的过程中判断相邻的字母是否相同来更新连续字母出现的最大次数即可,声明一个初始值为1的变量然后当相邻的字母相同的时候次数加1,否则更新连续相同的字符出现的最大次数,并且将这个变量的值重置为1这样可以计算下一次连续字母出现的次数
3. 代码如下:
import collections
class Solution:
def maxPower(self, s: str) -> int:
res, count = 1, 1
for i in range(1, len(s)):
# 判断相邻两个字符是否相等
if s[i] == s[i - 1]:
count += 1
else:
res = max(res, count)
count = 1
# 字符串中最后的字符可能连续相等的所以需要再求解一下最大值
res = max(res, count)
return res