个人可以架设网站吗,莆田有哪些网站建设公司,做新网站怎样提交360,柳州集团学校网站建设给你一个字符串 s 和一个整数 k #xff0c;请你找出 s 中的最长子串#xff0c; 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
示例 1#xff1a;
输入#xff1a;s “aaabb”, k 3 输出#xff1a;3 解释#xff1a;最长子串为 “aaa” …给你一个字符串 s 和一个整数 k 请你找出 s 中的最长子串 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
示例 1
输入s “aaabb”, k 3 输出3 解释最长子串为 “aaa” 其中 ‘a’ 重复了 3 次。
解题思路
枚举滑动窗口内不同字母的个数限制合法的窗口除了需要满足题目条件外还必须包含特定数目的不同字母
代码 class Solution {public int longestSubstring(String s, int k) {int ns.length(),len0;for (int i 1; i 26; i) {int[] cntnew int[26];int l0,r0,total0,less0,cur0;
//less记录出现次数小于k的字母个数cur窗口内不同字母的个数while (rn){cnt[s.charAt(r)-a];int i1 cnt[s.charAt(r) - a];if(i1 1)//窗口内第一次出现的字母 {cur;less;}if(i1k) less--;//窗口内已经满足条件的字母while (curi)//不同字母的个数过多需要移动窗口直到个数符合{if(cnt[s.charAt(l)-a]1){less--;cur--;}if(cnt[s.charAt(l)-a]k){less;}cnt[s.charAt(l)-a]--;l;}if(less0)len Math.max(len,r-l1);r;}}return len;}
}