searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

较大分组的位置-算法学习

2023-07-12 04:00:42
1
0

题目详情:
在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为 较大分组 。

找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。


示例:
输入:s = "abbxxxxzzy"
输出:[[3,6]]
解释:"xxxx" 是一个起始于 3 且终止于 6 的较大分组。

解题思路:

首先,我们定义一个空数组 result 来存储结果。然后,定义一个变量 start 来记录当前分组的起始位置。

使用一个循环遍历字符串 s,从第二个字符开始(索引为1)。如果当前字符与前一个字符不相同,或者已经遍历到了字符串的末尾,则表示当前分组结束。我们检查当前分组的长度是否大于等于3,如果是,则将起始位置和结束位置的下标构成的区间 [start, i-1] 添加到结果数组 result 中。然后,更新 start 的值为当前字符的下标,开始记录新的分组的起始位置。

最后,返回结果数组 result。


代码实现:

function largeGroupPositions(s) {
    const result = [];
    let start = 0;

    for (let i = 1; i <= s.length; i++) {
        if (i === s.length || s[i] !== s[i - 1]) {
            if (i - start >= 3) {
                result.push([start, i - 1]);
            }
            start = i;
        }
    }

    return result;
}

// 示例输入
const s = "abbxxxxzzy";

// 调用函数并输出结果
console.log(largeGroupPositions(s));
0条评论
作者已关闭评论
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
原创

较大分组的位置-算法学习

2023-07-12 04:00:42
1
0

题目详情:
在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为 较大分组 。

找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。


示例:
输入:s = "abbxxxxzzy"
输出:[[3,6]]
解释:"xxxx" 是一个起始于 3 且终止于 6 的较大分组。

解题思路:

首先,我们定义一个空数组 result 来存储结果。然后,定义一个变量 start 来记录当前分组的起始位置。

使用一个循环遍历字符串 s,从第二个字符开始(索引为1)。如果当前字符与前一个字符不相同,或者已经遍历到了字符串的末尾,则表示当前分组结束。我们检查当前分组的长度是否大于等于3,如果是,则将起始位置和结束位置的下标构成的区间 [start, i-1] 添加到结果数组 result 中。然后,更新 start 的值为当前字符的下标,开始记录新的分组的起始位置。

最后,返回结果数组 result。


代码实现:

function largeGroupPositions(s) {
    const result = [];
    let start = 0;

    for (let i = 1; i <= s.length; i++) {
        if (i === s.length || s[i] !== s[i - 1]) {
            if (i - start >= 3) {
                result.push([start, i - 1]);
            }
            start = i;
        }
    }

    return result;
}

// 示例输入
const s = "abbxxxxzzy";

// 调用函数并输出结果
console.log(largeGroupPositions(s));
文章来自个人专栏
js
57 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0