zoukankan      html  css  js  c++  java
  • [LC] 763. Partition Labels

    A string S of lowercase letters is given. We want to partition this string into as many parts as possible so that each letter appears in at most one part, and return a list of integers representing the size of these parts.

    Example 1:

    Input: S = "ababcbacadefegdehijhklij"
    Output: [9,7,8]
    Explanation:
    The partition is "ababcbaca", "defegde", "hijhklij".
    This is a partition so that each letter appears in at most one part.
    A partition like "ababcbacadefegde", "hijhklij" is incorrect, because it splits S into less parts.
    

    Note:

    1. S will have length in range [1, 500].
    2. S will consist of lowercase letters ('a' to 'z') only.
    class Solution {
        public List<Integer> partitionLabels(String S) {
            Map<Character, Integer> map = new HashMap<>();
            for (int i = 0; i < S.length(); i++) {
                map.put(S.charAt(i), i);
            }
            
            int lastIndex = 0;
            int start = 0, i = 0;
            List<Integer> list = new ArrayList<>();
            while (i < S.length()) {
                lastIndex = Math.max(lastIndex, map.get(S.charAt(i)));
                // current index get to farest up to now
                if (i == lastIndex) {
                    list.add(lastIndex - start + 1);
                    start = lastIndex + 1;
                }
                i += 1;
            }
            return list;
        }
    }
  • 相关阅读:
    js检测对象中是否存在某个属性
    ES6 笔记
    DataSet 用法
    CommandBehavior.CloseConnection有何作用
    SqlDataReader
    Listview.Finditem()函数用法
    Instr()函数用法
    StringBuilder与StringBuffer的区别
    [DllImport("kernel32.dll")]使用
    extern用法
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12784203.html
Copyright © 2011-2022 走看看