【我也想刷穿 LeetCode】1446. 连续字符

108 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

现在前端很多岗位面试需要有一定的算法基础,或者说经常刷算法的会优先考虑。

因此每天刷刷LeetCode非常有必要

在这之前我也刷过一些算法题,也希望以后也坚持刷,跟某掘友一样,我也想刷穿 LeetCode

一、题目描述

给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。

请你返回字符串 s 的 能量。

 

示例 1:

输入:s = "leetcode"
输出:2
解释:子字符串 "ee" 长度为 2 ,只包含字符 'e'

示例 2:

输入:s = "abbcccddddeeeeedcba"
输出:5
解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e'

提示:


1 <= s.length <= 500
s 只包含小写英文字母。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/co… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析

使用两个指针slow, fast,均从0开始,其中边界条件是slow和fast均小于字符串得长度。

具体操作: 如果两个数相等,fast++,如果不相等,则slow++,同时比较max,fast-slow

最后需要需要考虑得是,如果字符串中每个字符都相等,上面的就不会不满足,就不会更新max,所以需要在返回的结果中做下比较,再次比较max和fast - slow的大小。

三、代码实现

var maxPower = function(s) {
    let slow = 0, fast = 0;
    let max = 0;

    if(s.length === 1) {
        return 1;
    }
    
    while(slow < s.length && fast < s.length) {
        if(s[slow] !== s[fast]) {
            max = Math.max(max, fast - slow);
            slow ++
        } else {
            fast++;
        }

    }

    return Math.max(max, fast-slow);
};

四、总结

以上就是本道题的所有内容了,本系列会持续更,欢迎点赞、关注、收藏,另外如有其他的问题,欢迎下方留言给我,我会第一时间回复你,感谢~