领扣LintCode算法问题答案-1438. 较大分组的位置

    科技2022-07-13  123

    领扣LintCode算法问题答案-1438. 较大分组的位置

    目录

    1438. 较大分组的位置描述样例 1:样例 2:样例 3: 题解鸣谢

    1438. 较大分组的位置

    描述

    在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。

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

    我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。

    最终结果按照字典顺序输出。

    1 <= S.length <= 1000

    样例 1:

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

    样例 2:

    输入: "abc" 输出: [] 解释: "a","b" 和 "c" 均不是符合要求的较大分组。

    样例 3:

    输入: "abcdddeeeeaabbbcd" 输出: [[3,5],[6,9],[12,14]]

    题解

    public class Solution { /** * @param S: a string * @return: the starting and ending positions of every large group */ public List<List<Integer>> largeGroupPositions(String S) { // Write your code here List<List<Integer>> ret = new ArrayList<>(); int startIndex = 0; for (int i = 1; i < S.length(); i++) { char c = S.charAt(i); char lastC = S.charAt(i - 1); if (c != lastC) { if (i - startIndex >= 3) { List<Integer> row = new ArrayList<>(); row.add(startIndex); row.add(i - 1); ret.add(row); } startIndex = i; } } if (S.length() - startIndex >= 3) { List<Integer> row = new ArrayList<>(); row.add(startIndex); row.add(S.length() - 1); ret.add(row); } return ret; } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.014, SQL: 8