830. Positions of Large Groups [Easy]

    科技2022-07-12  128

    https://leetcode.com/problems/positions-of-large-groups/

    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".

    A group is identified by an interval [start, end], where start and end denote the start and end indices (inclusive) of the group. In the above example, "xxxx" has the interval [3,6].

    A group is considered large if it has 3 or more characters.

    Return the intervals of every large group sorted in increasing order by start index.

    Example 1:

    Input: s = "abbxxxxzzy" Output: [[3,6]] Explanation: "xxxx" is the only group with start index 3 and end index 6.

    Example 2:

    Input: s = "abc" Output: [] Explanation: We have groups "a", "b", and "c", none of which are large groups.

    Example 3:

    Input: s = "abcdddeeeeaabbbcd" Output: [[3,5],[6,9],[12,14]] Explanation: The large groups are "ddd", "eeee", and "bbb".

    Example 4:

    Input: s = "aba" Output: []

    Constraints:

    1 <= s.length <= 1000s contains lower-case English letters only.

    算法思路:

    class Solution { public: vector<vector<int>> largeGroupPositions(string s) { vector<vector<int>> res; int start = 0; int end = 0; for (int i = 1, n = s.size(); i < n; i++) { if (s[i] == s[start]) { while (i < n && s[i] == s[start]) { end++; i++; } if (end - start >= 2) { res.push_back({start, end}); } } start = i; end = i; } return res; } };

     

    Processed: 0.017, SQL: 8