zoukankan      html  css  js  c++  java
  • 力扣763题(划分字母区间)

    763、划分字母区间

    基本思想:

    贪心

    具体实现:

    1.统计每一个字符最后出现的位置

    2.用i从头遍历字符,idx记录这些字符更靠后的最后出现的位置

    比如图中a最后出现的位置是8,b最后出现的位置是5,idx记录8

    分割点就是i == idx时,i的值

    代码:

    class Solution {
        public List<Integer> partitionLabels(String s) {
            List<Integer> list = new LinkedList<>();
            int[] edge = new int[123];
            char[] chars = s.toCharArray();
            for (int i = 0; i < chars.length; i++){
                edge[chars[i] - 0] = i;
                //edge里面存放的是所有字符在chars这个数组中最后出现的位置
                //edge的下标对应字符的ascii
                //比如[abca]这个数组对应的edge就是
                //[.....301.....] 3在第97位,a的ascii是97,a在数组中最后的位置下标是3
            }
            int idx = 0;
            int last = -1;
            for (int i = 0; i < chars.length; i++){
                idx = Math.max(idx, edge[chars[i] - 0]);
                if (i == idx) {
                    list.add(i - last);
                    last = i;
                }
            } 
            return list;
        }
    }
  • 相关阅读:
    如何让Jboss的debug在myeclise上运行
    ./configure --prefix /?/? 解释
    解决locate无法使用的问题
    ifconfig command not found
    安装tomcat
    通过wget下载tomcat
    通过rpm安装jdk
    通过wget下载jdk
    oracle 创建表空间
    在ASP中使用VFP编写脚本程序
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15455577.html
Copyright © 2011-2022 走看看