• 至少有K个重复字符的最长字串 分治法+递归


    题目:

      

    思路:

      分治法

      遍历字符串,将字符出现次数少于K次的,存入数组(数组下标为( 字符 -  'a' ),内容为出现次数

           作为分割条件,对字符串进行多条件切割

      递归字串,求max


    (一)代码

      

    class Solution {
        public int longestSubstring(String s, int k) {
            //因s中都是小写字母,定义一个26的数组
            int[] ss = new int[26];
            //数组存储对应字母出现的次数
            for(char ch : s.toCharArray()) ss[ch - 'a']++;
            //拼接低于k次的字母 用于分割s
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.append("[");
            boolean flag = true;
            for(int i = 0 ; i < ss.length ; i++){
                if(ss[i] > 0 && ss[i] < k){
                    strBuilder.append("//");
                    strBuilder.append((char)(i+'a'));
                    flag = false;
                }
            }
            strBuilder.append("]");
            if(flag) return s.length(); //递归出口
    
            //按照多条件分割字符串
            String[] splitFinal = s.split(strBuilder.toString());
            int res = 0;
            for(int i = 0 ; i < splitFinal.length ; i++){
                //递归
                res = Math.max(longestSubstring(splitFinal[i],k),res);
            }
            return res;
        }
    }

       


              孤注一掷

      

  • 相关阅读:
    TCP三次握手四次挥手
    TCP与UDP的区别
    mysql从库设置全局只读,并创建普通账号
    docker安装mysql主从
    mysql 更换数据目录
    Docker 部署 ElasticSearch
    js获取地址栏传参
    PHP-MySQL基本操作
    基于element-tree-table树型表格点击节点请求数据展开树型表格
    拖拽读取文件
  • 原文地址:https://www.cnblogs.com/misscai/p/15355910.html
Copyright © 2020-2023  润新知