題目鏈接
難度:簡(jiǎn)單 ??????類型: 雙指針
在一個(gè)由小寫字母構(gòu)成的字符串 S 中逗扒,包含由一些連續(xù)的相同字符所構(gòu)成的分組蜈出。
例如肄满,在字符串 S = "abbxxxxzyy" 中脱吱,就含有 "a", "bb", "xxxx", "z" 和 "yy" 這樣的一些分組智政。
我們稱所有包含大于或等于三個(gè)連續(xù)字符的分組為較大分組。找到每一個(gè)較大分組的起始和終止位置箱蝠。
最終結(jié)果按照字典順序輸出。
示例1
輸入: "abbxxxxzzy"
輸出: [[3,6]]
解釋: "xxxx" 是一個(gè)起始于 3 且終止于 6 的較大分組垦垂。
示例2
輸入: "abc"
輸出: []
解釋: "a","b" 和 "c" 均不是符合要求的較大分組宦搬。
示例3
輸入: "abcdddeeeeaabbbcd"
輸出: [[3,5],[6,9],[12,14]]
解題思路
當(dāng)S[i]不等于S[i-1]時(shí),求分組的長(zhǎng)度i-start劫拗,之后將start更新為i
代碼實(shí)現(xiàn)
class Solution(object):
def largeGroupPositions(self, S):
"""
:type S: str
:rtype: List[List[int]]
"""
start, n, res = 0, len(S), []
for i in range(1,n):
if S[i] != S[i-1]:
if i-start>=3:
res.append([start, i-1])
start = i
if n-1-start>=2:
res.append([start, n-1])
return res