前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode每日一题:830. 较大分组的位置

leetcode每日一题:830. 较大分组的位置

作者头像
用户7685359
发布2021-01-08 10:06:31
2900
发布2021-01-08 10:06:31
举报
文章被收录于专栏:FluentStudyFluentStudy
leetcode每日一题:830. 较大分组的位置:

https://leetcode-cn.com/problems/positions-of-large-groups/

一起刷题吧

一、题意分析

输入:字符串 输出:相同且连续的字符数量超过 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)。

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

代码语言:javascript
复制
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这种特殊情况的判断。这里贴上官方代码做为学习:

代码语言:javascript
复制
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)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FluentStudy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题意分析
  • 二、参考答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档