Minimum Window Substring LeetCode solution in Java

1
class Solution {
2
public String minWindow(String s, String t) {
3
HashMap<Character, Integer> child = new HashMap<>();
4
HashMap<Character, Integer> parent = new HashMap<>();
5

6
int left = -1, right = -1, match = 0;
7
String window = "";
8

9
for (int i = 0; i < t.length(); i++) {
10
char c = t.charAt(i);
11
child.put(c, child.getOrDefault(c, 0) + 1); // Child frequency map
12
}
13

14
while (true) {
15
boolean f1 = false, f2 = false;
16

17
while (right < s.length() - 1 && match < t.length()) {
18
right++;
19
char c = s.charAt(right);
20
parent.put(c, parent.getOrDefault(c, 0) + 1); // Acquiring characters till
21
if (parent.getOrDefault(c, 0) <= child.getOrDefault(c, 0)) // match count is equal
22
match++;
23

24
f1 = true;
25
}
26
while (left < right && match == t.length()) {
27
String potstring = s.substring(left + 1, right + 1);
28
if (window.length() == 0 || window.length() > potstring.length())
29
window = potstring; // Calculating length of window
30

31
left++;
32
char c = s.charAt(left);
33
parent.put(c, parent.getOrDefault(c, 0) - 1);
34
if (parent.get(c) == 0) // Releasing characters by
35
parent.remove(c); // left pointer for finding smallest window
36

37
if (parent.getOrDefault(c, 0) < child.getOrDefault(c, 0)) match--;
38

39
f2 = true;
40
}
41

42
if (f1 == false && f2 == false) break;
43
}
44

45
return window;
46
}
47
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0