获取字符串中连续最多的字符以及次数

本文介绍了如何在字符串中找到连续出现最多的字符及其次数。以字符串 'aabbcccddeeee11223' 为例,连续最多的是 'e',出现了4次。文章探讨了两种方法:传统的嵌套循环方法(实际时间复杂度为 O(n))和更高效的双指针法(时间复杂度为 O(n)),其中双指针法通过移动指针 i 和 j 实现高效查找。
摘要由CSDN通过智能技术生成

连续最多的字符

给一个字符串,找出连续最多的字符,以及次数。

例如字符串 `'aabbcccddeeee11223'`

连续最多的是 `e` ,4 次。

传统方式

嵌套循环,

找出每个字符的连续次数,并记录比较。

时间复杂度看似是 `O(n^2)`,因为是嵌套循环。

**但实际上它的时间复杂度是 `O(n)`,因为循环中有跳转**。

interface IRes {
    char: string
    length: number
}

/**
 * 求连续最多的字符和次数(嵌套循环)
 * @param str str
 */
export function findContinuousChar1(str: string): IRes {
    const res: IRes = {
        char: '',
        length: 0
    }

    const length = str.length
    if (length === 0) return res

    let tempLength = 0 // 临时记录当前连续字符的长度

    // O(n)
    for (let i = 0; i < length; i++) {
        tempLength = 0 // 重置

        for (let j = i; j < length; j++) {
            if (str[i] === str[j]) {
                tempLength++
            }

      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值