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;
        }
    }
  • 相关阅读:
    sublime text 前端插件安装
    echarts常用的配置项
    2018年okr
    charlse配置
    运维笔记
    移动端开发兼容问题全记录
    centos6下python开发环境搭建
    centos安装python2.7
    centos6安装MariaDB
    pzea上centos6安装mysql57
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12784203.html
Copyright © 2011-2022 走看看