zoukankan      html  css  js  c++  java
  • 830. Positions of Large Groups

    In a string S of lowercase letters, these letters form consecutive groups of the same character.

    For example, a string like S = "abbxxxxzyy" has the groups "a""bb""xxxx""z" and "yy".

    Call a group large if it has 3 or more characters.  We would like the starting and ending positions of every large group.

    The final answer should be in lexicographic order.

    Example 1:

    Input: "abbxxxxzzy"
    Output: [[3,6]]
    Explanation: "xxxx" is the single large group with starting  3 and ending positions 6.
    

    Example 2:

    Input: "abc"
    Output: []
    Explanation: We have "a","b" and "c" but no large group.
    

    Example 3:

    Input: "abcdddeeeeaabbbcd"
    Output: [[3,5],[6,9],[12,14]]

    Note:  1 <= S.length <= 1000

     

    //Time: O(n), Space: O(1)
        public List<List<Integer>> largeGroupPositions(String S) {
            List<List<Integer>> result = new ArrayList<List<Integer>>();
            
            if (S == null || S.length() == 0) {
                return result;
            }
            
            int j = 0;
            
            for (int i = 0; i <= S.length(); i++) {
                if (i == S.length() || S.charAt(i) != S.charAt(j)) {//two pointer题目一定不要忘记最后一位 eg:“aaa”
                    if (i - j >= 3) {
                        List<Integer> temp = new ArrayList<Integer>();
                        temp.add(j);
                        temp.add(i - 1);
                        result.add(temp);
                    }
                    
                    j = i;
                }
            }
            
            return result;
        }
  • 相关阅读:
    js正则表达式 (.+)与(.+?)
    javaScript中的继承
    理解javascript中event loop,
    vue3-provide/inject 注入
    javaScript设计模式
    javaScript语言精粹--函数
    vue在数据data里面引入图片语法是require("")
    查看分支
    vue项目里面预览下载附件
    小程序组件中传值的几种方式
  • 原文地址:https://www.cnblogs.com/jessie2009/p/9774167.html
Copyright © 2011-2022 走看看