一题多解
// 解法一
class Solution {
public:
vector<vector<int>> largeGroupPositions(string s) {
vector<vector<int>> ans;
int i,j;
for(i=0;i<s.length();i++){
for(j=i+1;j<s.length();){
if(s[i]==s[j]) j++;
else break;
}
if(j-i>=3) ans.push_back({i,j-1});
i=j-1;
}
return ans;
}
};
//解法二
class Solution {
public:
vector<vector<int>> largeGroupPositions(string s) {
vector<vector<int>> res;
for (int i = 1, j = 0; i < s.size(); ++i) {
while (i < s.size() && s[i] == s[j]) ++i;
if ( i - j >= 3) res.push_back({j, i - 1});
j = i;
}
return res;
}
};
解法三
class Solution {
public:
vector<vector<int>> largeGroupPositions(string s) {
vector<vector<int>> res;
int n=s.size();
int left=0,right=0;
while(right<n)
{
int cnt=0;
while(s[left]==s[right])
{
right++;
cnt++;
}
if(cnt>=3)res.push_back({left,right-1});
left=right;
}
if(res.size()==0)return {};
return res;
}
};