Tuesday, August 4, 2020

830. Positions of Large Groups ------------E

Q:

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


A:

class Solution {
public:
    vector<vector<int>> largeGroupPositions(string S) {
        vector<vector<int>> res;
        int start = 0, n = S.length();
        while(start < n){
            int end = start;
            while(end < n && S[end] == S[start]){ //loop untill end is NOT same with start
                ++end;
            }
            if(end - start >=3){
                vector<int> tmp{start,end-1};
                res.push_back(tmp);
            }
            start = end;
        }
        return res;
    }
};

这都能写出错来,真的是无可饶恕。
-------------------end 一开始定义不明。 搞出bug来了

No comments:

Post a Comment