1100.Find-K-Length-Substrings-With-No-Repeated-Characters

1100. Find K Length Substrings With No Repeated Characters

题目地址

题目描述

Given a string S, return the number of substrings of length K with no repeated characters.
​
Example 1:
Input: S = "havefunonleetcode", K = 5
Output: 6
Explanation:
There are 6 substrings they are : 'havef','avefu','vefun','efuno','etcod','tcode'.
​
Example 2:
Input: S = "home", K = 5
Output: 0
Explanation:
Notice K can be larger than the length of S. In this case is not possible to find any substring.
​
Note:
​
1 <= S.length <= 10^4
All characters of S are lowercase English letters.
1 <= K <= 10^4

代码

Approach 1: Sliding window

class Solution {
public int numKLenSubstrNoRepeats(String S, int K) {
HashSet<Character> cur = new HashSet<>();
int res = 0, i = 0;
for (int j = 0; j < S.length(); j++) {
​
while (cur.contains(S.charAt(j))) {
cur.remove(S.charAt(i++));
}
cur.add(S.charAt(j));
​
if (j - i + 1 >= K) {
res += 1;
}
}
​
return res;
}
}