zoukankan      html  css  js  c++  java
  • 395. 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.



    class Solution {
    public:
        //分治加递归
        int longestSubstring(string s, int k) {
            if(s.size()<k) return 0;
            vector<int> m(26,0);
            for(int i=0;i<s.size();i++){
                m[s[i]-'a']++;
            }
            bool flag = true;
            int j=0;
            for(j=0;j<s.size();j++){
                if(m[s[j]-'a']<k){
                    flag = false;
                    break;
                }
            }
            if( flag == true) return s.size();
            //否则以第一次出现不符合要求的s[i]的位置为分割,左右分治
            int res1 = longestSubstring(s.substr(0,j),k);
            int res2 = longestSubstring(s.substr(j+1),k);
            return max(res1,res2);
        }
    };
  • 相关阅读:
    2019.8.16
    一种抠环的办法
    [HAOI2015]树上染色
    有关树形背包
    2019.7.27
    有关矩阵快速幂
    2019.7.25
    欧拉函数(转载)
    2019.7.22
    phpstudy集成环境安装redis扩展
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/13909010.html
Copyright © 2011-2022 走看看