这是一个关于LeetCode问题395的问题,题为"Longest Substring with At Least K Repeating Characters."
有人发布了一个非常简洁的解决方案(用Python编写),我很难理解这种方法的核心思想。我可以机械地遵循代码(如下所示),但我不能完全理解这里的核心思想。例如,我看到它对字符串中的字符进行计数,并递归地在计数小于指定的最大字符数(k)的字符处拆分字符串。在
def longestSubstring(self, s, k):
for c in set(s):
if s.count(c) < k:
return max(self.longestSubstring(t, k) for t in s.split(c))
return len(s)
作者说(加上强调),“如果每个字符出现至少k次,整个字符串就可以了。否则,用最少出现的字符进行拆分(,因为它总是太少,因此不能成为任何ok子字符串的一部分),并充分利用拆分。”
为什么当一个字符太少时,它必然不能是任何有效子字符串的一部分?在
从问题中:
这个问题指出,字符串中的每个字符至少需要出现k次,因此每个太少的字符都不能是任何子字符串的一部分。在
相关问题 更多 >
编程相关推荐