第 114 题:找出字符串中连续出现最多的字符和个数

解题思路

为了找出字符串中连续出现最多的字符及其个数,我们可以采用一次遍历的方法。通过记录当前字符及其连续出现的次数,同时更新最大字符和最大次数,最终返回结果。

具体步骤

  1. 初始化变量:我们需要一个变量来记录当前字符、当前字符出现的次数、最大字符以及最大出现次数。
  2. 遍历字符串 :逐个字符检查:
    • 如果当前字符与前一个字符相同,增加当前计数。
    • 如果不同,比较当前计数与最大计数,更新最大字符和最大计数,然后重置当前字符及计数。
  3. 最后检查:遍历结束后,需再次检查以确保最后的字符计数被考虑在内。
  4. 返回结果。

代码实现

下面是用 Python 实现的代码示例:

python 复制代码
def max_consecutive_char(s: str) -> (str, int):
    if not s:  # 如果字符串为空,返回空字符和0
        return "", 0
    
    max_char = s[0]  # 初始化最大字符
    max_count = 1    # 初始化最大计数
    current_char = s[0]  # 当前字符
    current_count = 1      # 当前计数

    for i in range(1, len(s)):
        if s[i] == current_char:  # 当前字符与上一个字符相同
            current_count += 1
        else:  # 当前字符不同
            if current_count > max_count:  # 更新最大字符和计数
                max_char = current_char
                max_count = current_count
            current_char = s[i]  # 更新当前字符
            current_count = 1     # 重置当前计数

    # 最后检查一次
    if current_count > max_count:
        max_char = current_char
        max_count = current_count

    return max_char, max_count

# 示例
s = "aaabbccaaaddddd"
result = max_consecutive_char(s)
print(f"字符: {result[0]}, 个数: {result[1]}")

代码解析

  • 函数定义 :max_consecutive_char(s: str) -> (str, int) 定义了一个接受字符串并返回字符及其个数的函数。
  • 边界条件:首先检查字符串是否为空,若为空则直接返回空字符和0。
  • 初始化 :使用 max_char 和 max_count 记录最大字符和最大出现次数,current_char 和 current_count 用于跟踪当前字符及其计数。
  • 遍历字符串:在循环中,根据当前字符与前一个字符是否相同来更新计数。
  • 最终检查 :循环结束后,检查最后的 current_count 是否大于 max_count,以确保最后的字符统计被考虑。

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串的长度。我们只遍历了一次字符串。
  • 空间复杂度:O(1),只使用了常数大小的额外空间。

总结

通过这个方法,我们可以高效地找出字符串中连续出现最多的字符和个数。这个算法简单易懂,且性能优越,适用于处理较长的字符串。

相关推荐
修炼的dance几秒前
压完的PDF验签不报错,是因为签名被删了
前端
ModStart4 分钟前
ProcHub v0.7.0 命令行工具上线,进程、配置与 WSL 都能在终端管理
前端
那年那棵树7 分钟前
基于WebGis的人生如旅地图系统
前端·arcgis·vue·课程设计
XZ-07000115 分钟前
week9-三元表达式
java·前端·python
叫我铁汁儿吧23 分钟前
Redux的原理
前端
云和数据.ChenGuang25 分钟前
name=“张三“ age=18 weight=100.3 print (name,age,weight)
java·服务器·前端
代码猎人25 分钟前
前端怎么优化兼容性
前端
Nayana27 分钟前
《Web 到 HarmonyOS》-- 进程、线程与通信:谁能通、怎么通
前端
叫我铁汁儿吧28 分钟前
JS 中的this
前端
狂潮lister33 分钟前
狂潮·元理论 | 第5篇:想为你的AI培养个性吗!哈哈哈……(6个测试,教你幻觉的正确玩法)
前端·人工智能