[LeetCode] 830. Positions of Large Groups_Easy tag: Two Pointers

本文介绍了一种使用两个指针的方法来查找字符串中连续相同字符形成的大型组(长度大于等于3)的起始和结束位置。通过遍历字符串,当遇到不同字符时检查当前组是否为大型组,并记录相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

In a string S of lowercase letters, these letters form consecutive groups of the same character.

For example, a string like S = "abbxxxxzyy" has the groups "a""bb""xxxx""z" and "yy".

Call a group large if it has 3 or more characters.  We would like the starting and ending positions of every large group.

The final answer should be in lexicographic order.

 

Example 1:

Input: "abbxxxxzzy"
Output: [[3,6]]
Explanation: "xxxx" is the single large group with starting  3 and ending positions 6.

Example 2:

Input: "abc"
Output: []
Explanation: We have "a","b" and "c" but no large group.

Example 3:

Input: "abcdddeeeeaabbbcd"
Output: [[3,5],[6,9],[12,14]]

 

Note:  1 <= S.length <= 1000

 

思路用两个pointers

Code

class Solution:
    def largeGroupPositions(self, s):
        l, r, lr, ans = 0, 0, len(s),[]
        while r < lr:
            if s[r] != s[l]:
                if (r - l) >= 3:
                    ans.append([l, r-1])
                l = r
            elif r == lr -1 and r - l + 1 >= 3:
                ans.append([l,r])
            r += 1
        return ans
        

 

转载于:https://www.cnblogs.com/Johnsonxiong/p/9503529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值