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);
};
四、总结
以上就是本道题的所有内容了,本系列会持续更,欢迎点赞、关注、收藏,另外如有其他的问题,欢迎下方留言给我,我会第一时间回复你,感谢~