我的思路
哈希表创建二维数组,然后不对有新的增加,重启就增加,其实这里是变相替代了multi哈西
python的multidict应该是什么呢?
class Solution:
def largeGroupPositions(self, S: str) -> List[List[int]]:
d={}
for num,i in enumerate(S):
if i not in d:
d[i]=[[num,num]]
else:
flag=0
for ld in d[i]:
if ld[1]+1==num:
flag=1
ld[1]=num
if flag==0:
d[i].append([num,num])
res=[]
for i in d:
for ld in d[i]:
if ld[1]-ld[0]>=2:
res.append([ld[0],ld[1]])
return sorted(res)
最快解法
看到最快解法就感觉到其实是我想复杂了,就相当于人家完全用1个指针就解决问题了,start作为指针,count计数
这里是解决了python的for的问题
for i in range(1,len(S))
当然是我比较愚钝了
class Solution:
def largeGroupPositions(self, S: str) -> List[List[int]]:
if len(S) < 3:
return []
res = []
count = 1
start = 0
for i in range(1, len(S)):
if S[i] == S[i - 1]:
count += 1
else:
if count >= 3:
res.append([start, start + count - 1])
start, count = i, 1
if count >= 3:
res.append([start, start + count - 1])
return res