【题目】
给你一个字符串 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 只包含小写英文字母。
【代码】
【CPP】
执行用时:
0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:
6.8 MB, 在所有 C++ 提交中击败了84.25%的用户
class Solution {
public:
int maxPower(string s) {
s+="*";
char first=s[0];
int maxlen=0,loopcnt=0;
for(auto x:s){
if(x==first)
loopcnt++;
else{
maxlen=max(maxlen,loopcnt);
first=x;
loopcnt=1;
}
}
return maxlen;
}
};
【Python】
执行用时:
52 ms, 在所有 Python3 提交中击败了67.10%的用户
内存消耗:
14.9 MB, 在所有 Python3 提交中击败了7.94%的用户
class Solution:
def maxPower(self, s: str) -> int:
s+="*"
maxlen=0
loopcnt=0
first=s[0]
for x in s:
if x==first:
loopcnt+=1
else:
maxlen=max(maxlen,loopcnt)
loopcnt=1
first=x
return maxlen
【Python-groupby】
优点:简洁
缺点:时间复杂度高
class Solution:
def maxPower(self, s: str) -> int:
return max((len(list(group)) for _, group in groupby(s)))
【相关题型】
《1437. 是否所有 1 都至少相隔 k 个元素》题目
《【数组-简单】485. 最大连续1的个数(CPP、Python-groupby)》题目
【参考】
优秀题解