跳到主要内容

连续题库

2024年04月09日
柏拉文
越努力,越幸运

一、连续字符


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

示例一

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

示例二

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

1.1 一次遍历

思路

一、初始化变量

  • prevLen: 用于记录当前连续相同字符的计数, 也初始化为 1

  • maxLen: 用于记录目前为止遇到的最大连续字符数, 初始值为 1(假设字符串至少有一个字符)

二、遍历字符串, 从索引 1 开始遍历字符串(因为要与前一个字符比较), 比较当前字符与前一个字符, 如果 str[i]str[i-1] 相等, 说明当前字符与前一个字符是相同的, 表示连续重复的序列在增长; 如果不相等, 则说明连续序列被打断, 重新将 cnt 置为 1。

实现

function maxPower(str) {
let prevLen = 1;
let maxLen = 1;

for (let i = 0; i < str.length; i++) {
if (str[i] === str[i - 1]) {
prevLen++;
maxLen = Math.max(maxLen, prevLen);
} else {
prevLen = 1;
}
}

return maxLen;
}