[LeetCode] Positions of Large Groups

아르당·2026년 3월 1일

LeetCode

목록 보기
178/211
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

소문자로 된 문자열에서 같은 문자의 연속된 그룹을 형성한다.
예를 들어, s = "abbxxxxzyy" 같은 문자열은 "a", "bb", "xxxx", "z", "yy" 그룹을 가지고 있다.
그룹은 [start, end]로 구간이 구별되며, start와 end는 그룹의 시작과 마지막 인덱스를 나타낸다. 위 예에서 "xxxx"는 [3, 6] 구간이 된다.

그룹이 3이상이면 큰 그룹으로 간주한다.

시작 인덱스를 기준으로 오름차순으로 정렬된 모든 큰 그룹의 간격을 반환해라.

Example

#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"이다.

Constraints

  • 1 <= s.length <= 1000
  • s는 오직 영어 소문자로 구성된다.

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글