zoukankan      html  css  js  c++  java
  • 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

    Solution: Keep a variable to avoid boundary checking. 

    class Solution {
        public List<List<Integer>> largeGroupPositions(String S) {
            int left = 0, right = 0, n = S.length();
            char current = 'A';
            
            List<List<Integer> > result = new ArrayList<List<Integer> >();
            while (right < n) {
                while (right < n && S.charAt(right) == current) {
                    right++;
                }
                
                if (right - left >= 3) {
                    List<Integer> temp = new ArrayList<>();
                    temp.add(left);
                    temp.add(right - 1);
                    result.add(temp);
                }
                
                left = right;
                right = left;
                if (left < n) {
                    current = S.charAt(left);
                }
            }
            
            return result;
        }
    }
  • 相关阅读:
    Java程序员必知的8大排序
    JQUERY 展开收起显示隐藏效果
    Java程序员必知的8大排序
    辞职申请
    值得收藏的Microsoft SQL Server下的SQL语句
    SQL
    sql language
    insert with special ID
    ExcuteNonQuery
    JS
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/9065560.html
Copyright © 2011-2022 走看看