算法笔记: 力扣#830 较大分组的位置

问题描述


解法


分析

Python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class :
def largeGroupPositions(self, S):
"""
:type S: str
:rtype: List[List[int]]
"""
start = 0
end = 0
ans = []
for i in range(1, len(S)):
if S[i] == S[i-1]:
end = i
else:
if end - start >= 2:
ans.append([start, end])
start = i
if end - start >= 2:
ans.append([start, end])
return ans

Java 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class {
public List<List<Integer>> largeGroupPositions(String S) {
int start = 0;
int end = 0;
List<List<Integer>> ans = new ArrayList();
for(int i = 1; i < S.length(); i++){
if(S.charAt(i-1)==S.charAt(i)){
end = i;
}else{
if(end-start>=2){
ans.add(Arrays.asList(new Integer[]{start, end}));
}
start = i;
}
}
if(end-start>=2){
ans.add(Arrays.asList(new Integer[]{start, end}));
}
return ans;
}
}

时间复杂度

O(n).

空间复杂度

O(n).

链接


830. Positions of Large Groups
830. 较大分组的位置
(English version) Algorithm Notes: Leetcode#830 Positions of Large Groups