File tree 1 file changed +34
-0
lines changed
1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .HashMap ;
2
+ import java .util .Map ;
3
+
4
+ public class LongestSubstringKDistinct
5
+ {
6
+
7
+ public static void main (String [] args )
8
+ {
9
+ //input
10
+ String str = "AAAHHIBC" ;
11
+ int k = 2 ;
12
+
13
+ int windowStart = 0 ;
14
+ int maxLength = 0 ;
15
+ Map <Character , Integer > charFreqMap = new HashMap <>();
16
+ for (int windowEnd = 0 ; windowEnd < str .length (); windowEnd ++){
17
+ char rightChar = str .charAt (windowEnd );
18
+ charFreqMap .put (rightChar , charFreqMap .getOrDefault (rightChar , 0 ) + 1 );
19
+ while (charFreqMap .size () > k ) {
20
+ char leftChar = str .charAt (windowStart );
21
+ charFreqMap .put (leftChar , charFreqMap .get (leftChar ) - 1 );
22
+ if (charFreqMap .get (leftChar ) == 0 )
23
+ {
24
+ charFreqMap .remove (leftChar );
25
+ }
26
+ windowStart ++;
27
+ }
28
+ maxLength = Math .max (maxLength , windowEnd - windowStart + 1 );
29
+ }
30
+ System .out .println (maxLength );
31
+
32
+ }
33
+
34
+ }
You can’t perform that action at this time.
0 commit comments