1、仍然考虑建索引map,存储起始位置。当然,仅3个以上才存,这在遍历时可以做到。最后只需要遍历map即可。
class Solution {
public:
vector<vector<int>> largeGroupPositions(string S) {
int n = S.size();
if(n < 3)
return { };
map<char, vector<int>> eleMap;
vector<vector<int>> result;
int outerPtr = 0;
while(outerPtr < n){
int innerPtr = outerPtr + 1;
int count = 1;
while(S[innerPtr] == S[outerPtr]){
count++;
innerPtr++;
}
if(count >= 3){
eleMap[S[outerPtr]].push_back(outerPtr);
eleMap[S[outerPtr]].push_back(innerPtr - 1);
result.push_back(eleMap[S[outerPtr]]);
eleMap[S[outerPtr]].clear();
}
outerPtr = innerPtr;
}
return result;
}
};