|
1 | 1 | classSolution {
|
2 |
| -publicintlengthOfLongestSubstringKDistinct(Strings,intk) { |
3 |
| -Map<Character,Integer>map =newHashMap<>(); |
4 |
| -intstartIdx =0; |
5 |
| -intendIdx =0; |
6 |
| -intmaxLength =0; |
7 |
| -while (endIdx <s.length()) { |
8 |
| -map.put(s.charAt(endIdx),map.getOrDefault(s.charAt(endIdx),0) +1); |
9 |
| -endIdx++; |
10 |
| -while (startIdx <endIdx &&map.size() >k) { |
11 |
| -map.put(s.charAt(startIdx),map.getOrDefault(s.charAt(startIdx),0 ) -1); |
12 |
| -if (map.get(s.charAt(startIdx)) ==0) { |
13 |
| -map.remove(s.charAt(startIdx)); |
| 2 | +publicintlengthOfLongestSubstringKDistinct(Strings,intk) { |
| 3 | +Map<Character,Integer>map =newHashMap<>(); |
| 4 | +intstart =0; |
| 5 | +intend =0; |
| 6 | +intmaxLength =0; |
| 7 | +while (end <s.length()) { |
| 8 | +map.put(s.charAt(end),map.getOrDefault(s.charAt(end),0) +1); |
| 9 | +while (start <=end &&map.size() >k) { |
| 10 | +map.put(s.charAt(start),map.get(s.charAt(start)) -1); |
| 11 | +if (map.get(s.charAt(start)) ==0) { |
| 12 | +map.remove(s.charAt(start)); |
| 13 | + } |
| 14 | +start++; |
| 15 | + } |
| 16 | +end++; |
| 17 | +maxLength =Math.max(maxLength,end -start); |
14 | 18 | }
|
15 |
| -startIdx++; |
16 |
| - } |
17 |
| -maxLength =Math.max(maxLength,endIdx -startIdx); |
| 19 | +returnmaxLength; |
18 | 20 | }
|
19 |
| -returnmaxLength; |
20 |
| - } |
21 | 21 | }
|