题目
给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。
请你返回字符串的能量。
示例 1:
输入:s = "leetcode"
输出:2
解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。
示例 2:
输入:s = "abbcccddddeeeeedcba"
输出:5
解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。
思路
使用双指针,一个 left,一个 right
- right指向的元素是等于 left指向的元素就让 right右移一位,计数器加一
- 不等于,则让 left移动到 right的位置,计数器归零
Java代码
class Solution {
public int maxPower(String s) {
if(s == null) return 0;
int max = 0;
int left = 0;
int right = 0;
int len = s.length();
while(right < len){
int count = 0;
char ch = s.charAt(left);
// 只要等于左边字符,就一直 right+1
while(right<len && s.charAt(right) == ch){
count++;
right++;
}
// 跳出上一个while循环的时候已经是count到最大了
max = Math.max(max, count);
left = right;
}
return max;
}
}