给你一个字符串 S
,找出所有长度为 K
且不含重复字符的子串,请你返回全部满足要求的子串的数目
/*
通用模板
*/
public static int numKLenSubstrNoRepeats(String s, int k) {
int n = s.length();
int left = 0;
int right = 0;
int ans = 0;
char[] nums = new char[26];
while (right < n) {
nums[s.charAt(right) - 'a']++;
// 不满足条件左指针收缩
while (nums[s.charAt(right) - 'a'] > 1 || right - left + 1 > k) {
nums[s.charAt(left) - 'a']--; // 会跟上重复的然后去掉
left++;
}
// 符合条件
if (right - left + 1 == k) {
ans++;
}
right++;
}
return ans;
}