|
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 | } |