Position of Large Groups

# 問題

文字列sが与えられる.同種の文字が連続する部分のうち,長さが3以上の箇所をすべて取り出せ.

1
s = "abbxxxxzyy" -> [[3, 6]] ("xxxx")

# 解法

しゃくとり法.伸ばせるところまでrightを伸ばして,条件を満たさなくなったらleftright+1まで一気に更新する.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution:
    def largeGroupPositions(self, s: str) -> List[List[int]]:
        ans = []
        if len(s) == 1:
            return ans
        left = 0
        for right in range(1, len(s)+1, 1):
            if right == len(s) or s[left] != s[right]:
                if right - left >= 3:
                    ans.append([left, right-1])
                left = right
        return ans

# 出典

Hugo で構築されています。
テーマ StackJimmy によって設計されています。