zoukankan      html  css  js  c++  java
  • Leetcode830.较大分组的位置

    830. 较大分组的位置

    Difficulty: 简单

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

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

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

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

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

    示例 1:

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

    示例 2:

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

    示例 3:

    输入:s = "abcdddeeeeaabbbcd"
    输出:[[3,5],[6,9],[12,14]]
    解释:较大分组为 "ddd", "eeee" 和 "bbb"
    

    示例 4:

    输入:s = "aba"
    输出:[]
    

    提示:

    • 1 <= s.length <= 1000
    • s 仅含小写英文字母

    Solution

    Language: java

    class Solution {
        public List<List<Integer>> largeGroupPositions(String s) {
            char[] ss = s.toCharArray();
            List<List<Integer>> res = new ArrayList<>();
            for(int i=0, start = 0; i<ss.length ;i++){
                if(i+1 >= ss.length || ss[i+1] != ss[start]){
                    if(i + 1 - start >= 3) 
                        res.add(Arrays.asList(start, i));
                    start = i + 1;
                }
            }
            return res;
        }
    }
    

    笔记

    • Arrays.asList(T...a)方法返回的是Arrays中的静态内部类,而不是java.util中的ArrayList。该方法返回的ArrayList不支持add、remove。
  • 相关阅读:
    PHP 计算程序运行的时间
    PHP 简易版生成随机码
    PHP读取FLASH 文件信息
    MongoDB基本使用
    PHP实现QQ达人信息抓取
    bjtuOJ 1188 素数筛选
    bjtuOJ 1139 Longest Common Subsequence
    BJTU1113扫雷问题
    C#线程池的使用详解
    C#域名解析的简单制作
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14234570.html
Copyright © 2011-2022 走看看