题目
给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。
请你返回字符串的能量。
示例
-
示例一 输入:s = “leetcode” 输出:2 解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。 -
示例一 输入:s = “abbcccddddeeeeedcba” 输出:2 解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。 -
示例一 输入:s = “triplepillooooow” 输出:5 解释:子字符串 “ooooo” 长度为 5 ,只包含字符 ‘o’ 。
方法
一次遍历
class Solution {
public int maxPower(String s) {
int max = 1;
int cur = 1;
for(int i=0;i<s.length()-1;i++){
if(s.charAt(i) == s.charAt(i+1)){
cur++;
max = Math.max(max, cur);
}else{
cur=1;
}
}
return max;
}
}
遍历字符串中的每一个字符,判断其与下一个字符是否相同。
如果相同则记录出现次数的变量cur增加1,若不相同,则将记录变量cur重新置为1。过程中使用max变量记录cur最大值。
注意
- 每次遍历到重复字符时,除了cur自增外,也要对max进行更新。
- max和cur的初值均为1,代表没有重复字符。
提交结果
|