至少有K个重复字符的最长子串
Posted Alice_yufeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了至少有K个重复字符的最长子串相关的知识,希望对你有一定的参考价值。
class Solution
public int longestSubstring(String s, int k)
int ret = 0;
int n = s.length();
for (int t = 1; t <= 26; t++)
int l = 0, r = 0;
int[] cnt = new int[26];
int tot = 0;
int less = 0;
while (r < n)
cnt[s.charAt(r) - 'a']++;
if (cnt[s.charAt(r) - 'a'] == 1)
tot++;
less++;
if (cnt[s.charAt(r) - 'a'] == k)
less--;
while (tot > t)
cnt[s.charAt(l) - 'a']--;
if (cnt[s.charAt(l) - 'a'] == k - 1)
less++;
if (cnt[s.charAt(l) - 'a'] == 0)
tot--;
less--;
l++;
if (less == 0)
ret = Math.max(ret, r - l + 1);
r++;
return ret;
以上是关于至少有K个重复字符的最长子串的主要内容,如果未能解决你的问题,请参考以下文章