1. 题目解析与需求理解
- 连续字符这道题目要求我们找出给定字符串中连续相同字符的最长子串长度。这是一个典型的字符串处理问题,考察对字符串遍历和状态维护的基本功。
举个例子:
- 输入 "leetcode" 的输出是 2("ee")
- 输入 "abbcccddddeeeeedcba" 的输出是 5("eeeee")
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 解题思路分析
2.1 暴力解法
最直观的解法是双重循环遍历所有可能的子串,检查是否满足连续相同字符的条件。这种方法时间复杂度为O(n²),在字符串较长时效率较低。
2.2 滑动窗口优化
更优的解法是使用滑动窗口技术:
- 维护窗口的左右指针
- 右指针不断右移
- 当遇到不同字符时,更新最大长度并移动左指针
- 时间复杂度降为O(n)
2.3 单次遍历法
实际上可以进一步优化,只需一次遍历:
- 初始化计数器和最大长度
- 遍历字符串,比较当前字符与前一个字符
- 相同则计数器+1,不同则重置计数器
- 始终保持更新最大长度
3. 代码实现与优化
3.1 Python实现
python复制def maxPower(s: str) -> int:
if not s:
return 0
max_len = current_len = 1
for i in range(1, len(s)):
if s[i] == s[i-1]:
current_len += 1
max_len = max(max_len, current_len)
else:
current_len = 1
return max_len
3.2 代码优化点
- 边界处理:空字符串直接返回0
- 初始化:max_len和current_len都初始化为1
- 遍历从第二个字符开始
- 使用max函数简化逻辑
4. 复杂度分析
- 时间复杂度:O(n),只需一次字符串遍历
- 空间复杂度:O(1),只使用了常数级别的额外空间
5. 测试用例设计
好的测试
