为什么80%的码农都做不了架构师?>>>   

Longest Substring with At Least K Repeating Characters

问题:

Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times.

Example 1:

Input:
s = "aaabb", k = 3
Output:
3
The longest substring is "aaa", as 'a' is repeated 3 times.

Example 2:

Input:
s = "ababbc", k = 2
Output:
5
The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times.

解决:

① 思路是扫描出现次数小于k的字母,然后将它们作为分隔符,然后就将这些子串划分成原问题的子问题,递归求解。

class Solution { //5ms
    public int longestSubstring(String s, int k) {
        if (s.length() == 0) return 0;
        int[] hash = new int[26];
        for (char c : s.toCharArray()){
            hash[c - 'a'] ++;
        }
        int[] check = new int[26];
        for (int i = 0;i < 26;i ++){
            if (hash[i] < k) check[i] = -1;//标记出个数小于k的字符
        }
        int res = 0;
        int start = 0;
        for (int i = 0;i < s.length();i ++){
            if (check[s.charAt(i) - 'a'] == -1){
                res = Math.max(res,longestSubstring(s.substring(start,i),k));
                start = i + 1;
            }
        }
        if (start == 0){
            return s.length();
        }else {
            res = Math.max(res,longestSubstring(s.substring(start,s.length()),k));
        }
        return res;
    }
}

转载于:https://my.oschina.net/liyurong/blog/1601018

至少出现k次重复的子串的最大长度相关推荐

  1. poj3261(求至少出现k次的可重叠的子串的长度)

    题意: 给出n和k,n代表数字的个数,k代表你要求至少出现k次的,下面是n个数字,求出在其中至少出现k次的可重叠的子串的长度. 思路: 类似于1743但又不同于1743,思路大体上差不多,二分答案+判 ...

  2. 395. 至少有K个重复字符的最长子串

    395. 至少有K个重复字符的最长子串 Ideas 一开始想到的是sliding window,但是它要求的是最长子串,不太好写. [参考大佬的题解:借本题帮助大家理解递归] 求子串问题除了用双指针还 ...

  3. LeetCode 395. 至少有 K 个重复字符的最长子串--二分查找+前缀和+优先队列

    至少有 K 个重复字符的最长子串 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k .返回这一子串的长度. 示例 1: 输入:s = &q ...

  4. 【LeetCode】0395.至少有K个重复字符的最长子串

    题目要求 本题共有两个要求 符合要求的字符串中每一个字符出现的次数都要大于等于给与的数字K 最终返回结果的是符合要求的字符串中最长的字符串长度 算法思想 hash_map + 递归 + 分治 使用数组 ...

  5. LeetCode算法系列_0862_和至少为K的最短子数组

    0862_和至少为 K 的最短子数组 题目描述 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K . 如果没有和至少为 K 的非空子数组,返回 -1 . 示例1: 输入:A = [1], ...

  6. sqlserver text最大长度_1156. 单字符重复子串的最大长度

    1156. 单字符重复子串的最大长度 这道题测试用例都比较简单,用暴力也可以过. 遍历text字符串,假设当前遍历下标为i,我们匹配text[i]这个字符,向右遍历找到第一个不是text[i]的字符b ...

  7. 和至少为k的最短子数组 python_LeetCode 862. 和至少为 K 的最短子数组

    最近刷LeetCode题目的一些思路,题目信息 返回A 的最短的非空连续子数组的长度,该子数组的和至少为 K .如果没有和至少为 K 的非空子数组,返回 -1 . 示例 1:输入:A = [1], K ...

  8. 常考数据结构与算法:找到字符串的最长无重复字符子串

    题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 示例1 输入 [2,3,4,5] 返回值 4 示例2 输入 [2,2,3,4,3] 返回值 3 方法 ...

  9. 找到字符串的最长无重复字符子串

    题目: 给定一个字符串str,返回str中最长无重复字符子串的长度. 举例: str = "abcd",返回4.  str = "aabcb",返回3. 基本思 ...

  10. 字符串之找到字符串的最大无重复字符串子串

    题目: 字符串之找到字符串的最大无重复字符子串 举例: str = "adcd" return 4 str = "aabcd"  I know this str ...

最新文章

  1. futuretask java 并发请求_图文并茂理解 Java 多线程
  2. 推进教育人工智能?网易云和网易波特 “四步走”
  3. numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
  4. Javolution 2.2.5 - Java Struct/Union Simplified
  5. spring jdbc_Spring JDBC示例
  6. 基于Flex的MapGIS web开发——Flex中显示矢量地图(控件)
  7. CSS学习总结(4)——盒模型/背景属性
  8. 用c语言编程解决数学实际问题,运用C语言解决爱因斯坦的数学题
  9. 数字转换成汉语中人民币的大写(javascript正则)
  10. matlab的double和single类型
  11. python哈姆雷特词频统计_python day 17 文本词频统计
  12. 电商项目实战之支付宝支付订单
  13. 七位高僧大德的临终开示,非大福报者不得见
  14. 数据结构——树|N叉树之孩子双亲表示法——顺序存储结构+链表
  15. 网络设置巨形帧_NAS的巨型帧(Jumbo_Frame)设置对其传输速度的影响的评测与分析...
  16. 看士兵突击 一、二集有感--------是单纯 OR 笨?
  17. Fuzzing论文_CONCURR COMP-PRACT E2020_Fw-fuzz
  18. IOS - 七大手势操作
  19. office 2010 excle不能打开多个窗口
  20. 【天光学术】中国大学英语专业学年论文写作特点

热门文章

  1. cmake和make区别
  2. Evolved Transformer
  3. 华为天才少年-廖明辉
  4. CondaHTTPError: HTTP 000 CONNECTION FAILED for url ...... 解决过程
  5. Linux4755文件权限,如何在Linux中管理文件和文件夹的权限
  6. android 监听网络的详细例子,android 短信 发送 监听 拦截等自己写的demo
  7. laravel 商城_Laravel使用初心
  8. antd vue form 手动校验_vue测试模板与jsonSchema自动生成elment组件
  9. 凸优化第六章逼近与拟合 6.1范数逼近
  10. 现代通信原理2.2:信号时间平均算子与信号物理参数