LeetCode 395. Longest Substring with At Least K Repeating Characters

来源:互联网 发布:钢铁力量天王战车数据 编辑:程序博客网 时间:2024/06/05 00:41

Problem Statement

(Source) 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 = 3Output:3The longest substring is "aaa", as 'a' is repeated 3 times.

Example 2:

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

Solution 1

class Solution(object):    def longestSubstring(self, s, k):        """        :type s: str        :type k: int        :rtype: int        """        if len(s) < k:            return 0        ch = min(set(s), key=s.count)        if s.count(ch) >= k:            return len(s)        return max([self.longestSubstring(t, k) for t in s.split(ch)])

Solution 2

class Solution(object):    def longestSubstring(self, s, k):        """        :type s: str        :type k: int        :rtype: int        """        from collections import Counter        cnt = Counter(s)        if not s or cnt.most_common(1)[0][1] < k:            return 0        elif cnt.most_common()[-1][1] >= k:            return len(s)        else:            return max(self.longestSubstring(ss, k) for ss in s.split(cnt.most_common()[-1][0]))     
0 0
原创粉丝点击