zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 763 划分字母区间(暴力)

    763. 划分字母区间

    字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。

    示例 1:

    输入: S = “ababcbacadefegdehijhklij”
    输出: [9,7,8]
    解释:
    划分结果为 “ababcbaca”, “defegde”, “hijhklij”。
    每个字母最多出现在一个片段中。
    像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。
    注意:

    S的长度在[1, 500]之间。
    S只包含小写字母’a’到’z’。

    class Solution {
      public List<Integer> partitionLabels(String S) {
            boolean[] flag = new boolean[S.length()];
            List<Integer> list = new ArrayList<>();
            int begin = 0;
            while(begin<S.length()){
                int end = begin;
                for(int i=begin;i<=end;i++){
                    if(flag[i]){
                        continue;
                    }
                    int last = lastIndex(S, i, flag);
                    end = last>end?last:end;
                }
                list.add(end-begin+1);
                begin = end+1;
            }
            return list;
        }
        private int lastIndex(String S, int begin, boolean[] flag){
            int cur = begin, precur = -1;
            while(cur!=-1){
                precur = cur;
                flag[precur] = true;
                cur = S.indexOf(S.charAt(begin), cur+1);
            }
            return precur;
        }
    }
    
  • 相关阅读:
    网站首页的设计
    短网址服务的构建
    分布式服务框架:Zookeeper
    Hadoop数据传输工具:Sqoop
    规则引擎简介
    HadoopDoctor:来自腾讯数据仓库TDW的MR诊断系统
    Hermes:来自腾讯的实时检索分析平台
    Mdrill:来自阿里的多维快速查询工具
    Saiku操作界面的简化
    Saiku OLAP
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946184.html
Copyright © 2011-2022 走看看