网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

leetcode怎么判断较大分组的位置

这篇文章主要讲解了“leetcode怎么判断较大分组的位置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“leetcode怎么判断较大分组的位置”吧!

十载的象州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整象州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“象州网站设计”,“象州网站推广”以来,每个客户项目都认真落实执行。

一、题目内容

在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为 较大分组 。

找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。

示例 1:

输入: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"
输出:[]

二、解题思路

利用字典存储每个字母连续的区间,其中每个字母对应的value值的第一个元素作为是否是当前字母的标志,结果集里存储长度为3的区间即可。

三、代码

class Solution:
    def largeGroupPositions(self, s: str) -> list:
        s_dict = {}
        for i in range(len(s)):
            if i != 0:
                if s[i] != s[i - 1]:
                    s_dict[s[i - 1]][0] = 0
                    if len(s_dict[s[i - 1]][-1]) != 2:
                        s_dict[s[i - 1]][-1].pop()
            if s[i] not in s_dict:
                s_dict[s[i]] = [1, [i]]
            else:
                if len(s_dict[s[i]][-1]) >= 2:
                    if s_dict[s[i]][0] != 0:
                        s_dict[s[i]][-1].pop(-1)
                        s_dict[s[i]][-1].append(i)
                    else:
                        s_dict[s[i]].append([i])
                else:
                    s_dict[s[i]][-1].append(i)
                    s_dict[s[i]][0] = 1
        # print(s_dict)
        res = []
        for k, v in s_dict.items():
            for j in range(1, len(v)):
                if len(v[j]) == 2:
                    if v[j][1] - v[j][0] >= 2:
                        res.append([v[j][0], v[j][1]])
        sorted_res = sorted(res, key=lambda x: x[0])
        return sorted_res


if __name__ == '__main__':
    s = "abcdddeeeeaabbbcd"
    ss = Solution()
    ans = ss.largeGroupPositions(s)
    print(ans)

感谢各位的阅读,以上就是“leetcode怎么判断较大分组的位置”的内容了,经过本文的学习后,相信大家对leetcode怎么判断较大分组的位置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章名称:leetcode怎么判断较大分组的位置
网页网址:http://bjjierui.cn/article/ggedjd.html

其他资讯