Skip to content

Latest commit

 

History

History
129 lines (96 loc) · 4.79 KB

1446.md

File metadata and controls

129 lines (96 loc) · 4.79 KB
title description keywords
1446. 连续字符
LeetCode 1446. 连续字符题解,Consecutive Characters,包含解题思路、复杂度分析以及完整的 JavaScript 代码实现。
LeetCode
1446. 连续字符
连续字符
Consecutive Characters
解题思路
字符串

1446. 连续字符

🟢 Easy  🔖  字符串  🔗 力扣 LeetCode

题目

The power of the string is the maximum length of a non-empty substring that contains only one unique character.

Given a string s, return thepower of s.

Example 1:

Input: s = "leetcode"

Output: 2

Explanation: The substring "ee" is of length 2 with the character 'e' only.

Example 2:

Input: s = "abbcccddddeeeeedcba"

Output: 5

Explanation: The substring "eeeee" is of length 5 with the character 'e' only.

Constraints:

  • 1 <= s.length <= 500
  • s consists of only lowercase English letters.

题目大意

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

请你返回字符串 s能量

示例 1:

输入: s = "leetcode"

输出: 2

解释: 子字符串 "ee" 长度为 2 ,只包含字符 'e' 。

示例 2:

输入: s = "abbcccddddeeeeedcba"

输出: 5

解释: 子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。

提示:

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

解题思路

通过一次遍历,记录当前连续字符的长度,并在字符变化时更新最大长度,可以高效解决此问题。

  1. 初始化变量:

    • power:记录当前连续字符的长度。
    • prevChar:记录上一个字符,用于判断当前字符是否与上一个字符相同。
    • maxPower:记录最大连续字符的长度。
  2. 遍历字符串:

    • 如果当前字符和 prevChar 相同,递增 power
    • 如果不同,更新 maxPower,重置 power 为 1,并更新 prevChar 为当前字符。
  3. 遍历结束:

    • 遍历完成后,返回 max(maxPower, power),确保最后一次连续字符长度被正确记录。

复杂度分析

  • 时间复杂度: O(n),遍历字符串中的每个字符,复杂度为线性。
  • 空间复杂度: O(1),只使用了固定数量的变量,空间复杂度为常数。

代码

/**
 * @param {string} s
 * @return {number}
 */
var maxPower = function (s) {
	let power = 0,
		prevChar = s[0];
	let maxPower = 0;
	for (let char of s) {
		if (char === prevChar) {
			power++; // 连续字符长度增加
		} else {
			maxPower = Math.max(maxPower, power); // 更新最大值
			power = 1; // 重置连续计数
			prevChar = char; // 更新当前字符
		}
	}
	return Math.max(maxPower, power); // 返回最终最大值
};

相关题目

题号 标题 题解 标签 难度 力扣
485 最大连续 1 的个数 [✓] 数组 🟢 🀄️ 🔗
674 最长连续递增序列 [✓] 数组 🟢 🀄️ 🔗
1759 统计同质子字符串的数目 数学 字符串 🟠 🀄️ 🔗
2213 由单个字符重复的最长子字符串 线段树 数组 字符串 1+ 🔴 🀄️ 🔗
2229 检查数组是否连贯 🔒 数组 哈希表 排序 🟢 🀄️ 🔗
3168 候诊室中的最少椅子数 字符串 模拟 🟢 🀄️ 🔗