Longest Substring with At Least K Repeating Characters
https://leetcode.com/contest/leetcode-weekly-contest-3/problems/longest-substring-with-at-least-k-repeating-characters/
这道题用的是recursion,思路比较难想。
首先我们要意识这有两种情况,在s的所有char中,出现次数最小的char如果它的freq 都大于或等于k,则s本身就是我们要求解的结果。
如果char次数小于k,那么这个char就是工具人了。。它帮助我们分隔出剩余所有可能满足条件的substring,因为这里的char不会再被使用,即使使用了也无法满足大于等于k的条件。那么剩下就用recursion devide and conquer。
from collections import Counter
class Solution:
def longestSubstring(self, s: str, k: int) -> int:
if s =="":
return 0
c = Counter(s)
small = ""
val = min([val for val in c.values()])
for key,v in c.items():
if v == val:
small = key
break
if c.get(small) >= k:
return len(s)
return max([self.longestSubstring(t,k) for t in s.split(small)])
Last updated
Was this helpful?