练习(2021/1/15)

题目:
给你一个字符串 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;
    }
}






猜你喜欢

转载自blog.csdn.net/weixin_45771602/article/details/112687875