第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

leetcode每日一題:830. 較大分組的位置

標簽:
Python 算法

一起刷题吧

一、题意分析

输入:字符串
输出:相同且连续的字符数量超过 3 的所有串的起始位置组成的列表
难度:简单

示例一
输入:s = "abbxxxxzzy"
输出:[[3,6]]
解释:“xxxx” 是一个起始于 3 且终止于 6 的较大分组。

示例 2
输入:s = "abc"
输出:[]
解释:“a”,“b” 和 “c” 均不是符合要求的较大分组。

示例 3
输入:s = "abcdddeeeeaabbbcd"
输出:[[3,5],[6,9],[12,14]]
解释:较大分组为 “ddd”, “eeee” 和 “bbb”

示例 4
输入:s = "aba"
输出:[]

二、参考答案

此题比较简单,其实基本就是按照题目意思遍历一遍即可。时间复杂度为 O(N)。

需要注意一些细节,比如示例代码中的最后一个测试用例:

from typing import List


class Solution:
    def largeGroupPositions(self, s: str) -> List[List[int]]:
        if not s:
            return []

        result = []
        pre = s[0]
        count = 1
        for i in range(1, len(s)):
            if s[i] == pre:
                count += 1
            else:
                if count >= 3:
                    result.append([i-count, i-1])
                pre = s[i]
                count = 1
        if count >= 3:
            result.append([i-count+1, i])
        return result

s = Solution()
print(s.largeGroupPositions("abbxxxxzzy"))
print(s.largeGroupPositions("abc"))
print(s.largeGroupPositions("abcdddeeeeaabbbcd"))
print(s.largeGroupPositions("aaa"))

参考了一下官方的代码,官方代码更加的简洁,且少去了最后对于aaa这种特殊情况的判断。这里贴上官方代码做为学习:

class Solution:
    def largeGroupPositions(self, s: str) -> List[List[int]]:
        ret = list()
        n, num = len(s), 1

        for i in range(n):
            # i == n-1 为最后一种测试用例的情况
            # 通过 s[i] 与 s[i+1] 对比,这样不需要像上面参考代码一样,从 1 开始初始化,也少了变量 pre 的记录
            if i == n - 1 or s[i] != s[i + 1]:
                if num >= 3:
                    ret.append([i - num + 1, i])
                num = 1
            else:
                num += 1
        
        return ret

# 作者:LeetCode-Solution
# 链接:https://leetcode-cn.com/problems/positions-of-large-groups/solution/jiao-da-fen-zu-de-wei-zhi-by-leetcode-so-fi3n/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

附上家中胖橘一枚,点个赞吧~

图片描述

點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消