> For the complete documentation index, see [llms.txt](https://zhongquan789.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zhongquan789.gitbook.io/leetcode/leetcode/leetcode_830.md).

# leetcode\_830

In a string S of lowercase letters, these letters form consecutive groups of the same character.

For example, a string like S = "abbxxxxzyy" has the groups "a", "bb", "xxxx", "z" and "yy".

Call a group large if it has 3 or more characters. We would like the starting and ending positions of every large group.

The final answer should be in lexicographic order.

Example 1:

Input: "abbxxxxzzy" Output: \[\[3,6]] Explanation: "xxxx" is the single large group with starting 3 and ending positions 6. Example 2:

Input: "abc" Output: \[] Explanation: We have "a","b" and "c" but no large group. Example 3:

Input: "abcdddeeeeaabbbcd" Output: \[\[3,5],\[6,9],\[12,14]]

Note: 1 <= S.length <= 1000

## Solutions

1. **straight forward**

```cpp
class Solution {
public:
    vector<vector<int>> largeGroupPositions(string S) {
        S.push_back(' ');
        vector<vector<int>> res;
        for (int i = 0, j = 1; j < S.size(); j++) {
            if (S[j] != S[j - 1]) {
                if (j - i >= 3)
                    res.push_back({i, j - 1});
                i = j;
            }
        }

        return res;
    }
};
```
