给你一个字符串 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 只包含小写英文字母。
解题思路
双指针
根据题意,使用「双指针」进行扫描计数即可。
代码:
class Solution {
public int maxPower(String s) {
int a = 1, b = 1;
for(int i = 0; i < s.length() - 1; i++){
if(s.charAt(i) == s.charAt(i + 1)) {
a++;
}else {
if(a > b) b = a;
a = 1;
}
}
return a > b ? a : b;
}
}
- 时间复杂度:O(n)O(n)
- 空间复杂度:O(1)O(1)