[leetCode]830. 较大分组的位置
程序员文章站
2022-07-10 17:23:03
题目https://leetcode-cn.com/problems/positions-of-large-groups/一次遍历使用一个变量num记录当前分组的长度num初始值为1,如果当前字符与之前的字符不同或者当前遍历到了数组尾部则判断num的大小如果num >= 3,则加入答案,其他情况使num++.class Solution { public List
- > largeGroupPositions(String s) {...
题目
https://leetcode-cn.com/problems/positions-of-large-groups/
一次遍历
使用一个变量num
记录当前分组的长度num
初始值为1,如果当前字符与之前的字符不同或者当前遍历到了数组尾部则判断num
的大小如果num >= 3
,则加入答案,其他情况使num++
.
class Solution {
public List<List<Integer>> largeGroupPositions(String s) {
List<List<Integer>> res = new ArrayList<>();
int num = 1, n = s.length();
for (int i = 1; i <= n; i++) {
if (i == n || s.charAt(i) != s.charAt(i - 1)) {
if (num >= 3) {
res.add(Arrays.asList(i - num,i - 1));
}
num = 1;
} else {
num++;
}
}
return res;
}
}
双指针
利用双指针记录数组每一段的长度,如果当前分组的长度大于等于3时更新答案
class Solution {
public List<List<Integer>> largeGroupPositions(String s) {
List<List<Integer>> res = new ArrayList<>();
int start = 0, end = 0, n = s.length();
while (end < n) {
while (end < n && s.charAt(end) == s.charAt(start)) {
end++;
}
int len = end - start;
if (len >= 3) {
List<Integer> one = new ArrayList<>();
one.add(start);
one.add(end - 1);
res.add(one);
}
start = end;
}
return res;
}
}
本文地址:https://blog.csdn.net/renweiyi1487/article/details/112211934
上一篇: 处暑节吃什么?
下一篇: 七夕节中国人通常吃什么?
推荐阅读
-
C++实现LeetCode(34.在有序数组中查找元素的第一个和最后一个位置)
-
Leetcode_dp 813. 最大平均值和的分组
-
leetcode:813. 最大平均值和的分组(dp)--(矩阵连乘升级版)
-
#leetcode刷题之路34-在排序数组中查找元素的第一个和最后一个位置
-
每日一题 21.1.5 LeetCode 830. 较大分组的位置 java题解
-
[leetCode]830. 较大分组的位置
-
Leetcode No.34 在排序数组中查找元素的第一个和最后一个位置
-
较大分组的位置
-
LeetCode28 实现strStr()(找到子串第一次出现的位置BF,KMP)
-
leetcode34---在排序数组中查找元素的第一个和最后一个位置