问题描述: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;
}
};