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;
        }
    }
    
  • 相关阅读:
    Java的一天学习
    IIS7配置PHP图解
    主流HTML5游戏框架的分析和对比
    HTTP请求
    hibernate -- 数据库连接池的失效检查设置
    mysql备份
    深入探索SOAP1.1--使用SAAJ1.2.1
    JDBC连接执行MySQL存储过程报权限错误
    mysql(connector/ODBC)
    mysql查询优化(三)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074813.html
Copyright © 2011-2022 走看看