题号830:
在一个由小写字母构成的字符串中,包含由一些连续的相同字符所构成的分组。
例如,在字符串中,就含有,,,和这样的一些分组。
我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。
最终结果按照字典顺序输出。
示例 1:
输入: "abbxxxxzzy"输出: [[3,6]]解释: "xxxx" 是一个起始于 3 且终止于 6 的较大分组。
示例 2:
输入: "abc"输出: []解释: "a","b" 和 "c" 均不是符合要求的较大分组。
示例 3:
输入: "abcdddeeeeaabbbcd"
输出: [[3,5],[6,9],[12,14]]
说明:
解题思路:
遍历字符串,用一个变量记录连续相等的字符的个数,若变量值大于等于3,则为较大分组。注意对最后一个分组的判断。
代码实现:
class Solution {
public:
vector> largeGroupPositions(string S) {
vector>arr;
int i=0,count=1;
for(;i
if(S[i]==S[i+1]){ // 连续字符还未结束
count++;
continue;
}
// 连续字符结束,判断是否为较大分组,count重置1
if(count>=3){
arr.push_back();
}
count=1;
}
// 对最后一个分组的判断
if(count>=3){
arr.push_back();
}
return arr;
}
};
领取专属 10元无门槛券
私享最新 技术干货