2
public String minWindow(String s, String t) {3
HashMap<Character, Integer> child = new HashMap<>();4
HashMap<Character, Integer> parent = new HashMap<>();6
int left = -1, right = -1, match = 0;9
for (int i = 0; i < t.length(); i++) {11
child.put(c, child.getOrDefault(c, 0) + 1); // Child frequency map15
boolean f1 = false, f2 = false;17
while (right < s.length() - 1 && match < t.length()) {19
char c = s.charAt(right);20
parent.put(c, parent.getOrDefault(c, 0) + 1); // Acquiring characters till21
if (parent.getOrDefault(c, 0) <= child.getOrDefault(c, 0)) // match count is equal26
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 window32
char c = s.charAt(left);33
parent.put(c, parent.getOrDefault(c, 0) - 1);34
if (parent.get(c) == 0) // Releasing characters by35
parent.remove(c); // left pointer for finding smallest window37
if (parent.getOrDefault(c, 0) < child.getOrDefault(c, 0)) match--;42
if (f1 == false && f2 == false) break;