一个字符串,只包含大写字母,求同一字母连续出现的最大次数、例如“AAAABBCDHHH”,同一字母连续出现的最大次数为4,因为一开始A连续出现了4次。解答要求:时间限制:C/C++1000ms,其他语言:2000ms内存限制C/C++1000MB其他语言:2000MB
时间: 2024-11-06 14:35:38 浏览: 77
统计字符串中字母和数字个数
这是一个常见的编程问题,通常可以用滑动窗口或者双指针技巧来解决。这里提供一个简单的思路:
首先,创建一个哈希表(HashMap或字典),用于存储每个字符及其出现的次数。遍历输入的字符串,对于每一个字符,更新它的计数,并检查当前字符的计数是否超过之前遇到的最大连续次数。如果当前字符的计数大于最大次数,就更新最大次数。
以下是伪代码:
```python
def max_consecutive_chars(s):
counts = {} # 字符到计数的映射
max_count = 0 # 最大连续次数
current_count = 0 # 当前字符的计数
for char in s:
if char not in counts:
counts[char] = 0
counts[char] += 1
current_count += 1
if current_count > max_count:
max_count = current_count
return max_count
# 示例
s = "AAAABBCDHHH"
print(max_consecutive_chars(s)) # 输出: 4
```
这个算法的时间复杂度是O(n),其中n是字符串的长度,因为它只需要一次遍历。空间复杂度也是O(1),除了存储原始字符串外,额外的空间只与字符集大小有关。
阅读全文