문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
소문자로 된 문자열에서 같은 문자의 연속된 그룹을 형성한다.
예를 들어, s = "abbxxxxzyy" 같은 문자열은 "a", "bb", "xxxx", "z", "yy" 그룹을 가지고 있다.
그룹은 [start, end]로 구간이 구별되며, start와 end는 그룹의 시작과 마지막 인덱스를 나타낸다. 위 예에서 "xxxx"는 [3, 6] 구간이 된다.
그룹이 3이상이면 큰 그룹으로 간주한다.
시작 인덱스를 기준으로 오름차순으로 정렬된 모든 큰 그룹의 간격을 반환해라.
#1
Input: s = "abbxxxxzzy"
Output: [[3, 6]]
Explanation: "xxxx"는 시작 인덱스 3과 마지막 인덱스 6 구간의 큰 구간이다.
#2
Input: s = "abc"
Output: []
Explanation: 그룹 "a", "b", "c"를 갖지만 큰 그룹은 없다.
#3
Input: s = "abcdddeeeeaabbbcd"
Output: [[3, 5], [6, 9], [12, 14]]
Explanation: 큰 그룹은 "ddd", "eeee", "bbb"이다.
class Solution {
public List<List<Integer>> largeGroupPositions(String s) {
List<List<Integer>> result = new ArrayList<>();
for(int i = 0, j = 0; i < s.length(); i = j){
while(j < s.length() && s.charAt(j) == s.charAt(i)){
++j;
}
if(j - i >= 3){
result.add(Arrays.asList(i, j - 1));
}
}
return result;
}
}