Skip to content

Commit a4397ef

Browse files
authored
Merge pull request #1 from Madhu2244/patch-1
Create LongestSubstringKDistinct.java
2 parents 4f7ee3b + 9e03cb9 commit a4397ef

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

LongestSubstringKDistinct.java

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

0 commit comments

Comments
 (0)