Leetcode:830. 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”.

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

难度等级:简单

class Solution {
public:
    vector<vector<int>> largeGroupPositions(string S) {
        vector<vector<int> > output;
        int cnt = 0;
        int start = 0;
        int end_loc = 0;
        int temp;


        for(auto &i:S){
            vector<int> loc;
            temp = start;
            while(i==S[temp]){
                ++temp;
                ++cnt;
            }
            if(cnt>=3){
                loc.push_back(start);
                end_loc = start + cnt-1;
                loc.push_back(end_loc);
                output.push_back(loc);
            }
            start += cnt;
            cnt = 0;
        }
        return output;
    }
};

猜你喜欢

转载自blog.csdn.net/felaim/article/details/80557932