题目:
给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。
请你返回字符串的能量。
思路:首先定义两个指针,一个指向left,一个指向right,判断对应指针上的字符是否相同,
如果相同,则right指针++,直到两个指针上的值不同为止,然后再判断两个指针索引值相减是否大于当前的能量,
如果大于就更新能量,同时left指针移动到right指针处,然后right = left + 1;如果要判断收尾的字符是否和left所在的字符相同,如果相同并且索引值相减大于最大值,则更新能量
class Solution {
public int maxPower(String s) {
int maxValue = 1;
if(s.length() == 1) {
return maxValue;
}
int left = 0;
int right = left + 1;
//定义左右指针
while(right != s.length()) {
char leftChar = s.charAt(left);
char rightChar = s.charAt(right);
if(leftChar != rightChar) {
if(right - left > maxValue) {
maxValue = right - left;
}
left = right;
right = left + 1;
}else {
right++;
}
}
/*
左右指针分别指向两个相邻的字节,如果相同
就把右指针向右移动一位,直到有相同的字节出现,此时两个指针之间的距离就是要找的能量
*/
if(s.charAt(left) == s.charAt(right - 1)) {
int i = right - left ;
if(i > maxValue) {
maxValue = i;
}
}//收尾的字符是和左指针所指的字节相同的情况
return maxValue;
}
}