easy peasy python [comments] solution
\tdef minWindow(self, s: str, t: str) -> str:\n        ln_s = len(s)\n        ln_t = len(t)\n        if ln_s == 0 or ln_t == 0 or ln_t > ln_s:\n            retu
\tdef minWindow(self, s: str, t: str) -> str:\n        ln_s = len(s)\n        ln_t = len(t)\n        if ln_s == 0 or ln_t == 0 or ln_t > ln_s:\n            return ""\n        dct = {}\n        for ch in t:\n            dct[ch] = dct.get(ch, 0) + 1\n        \n        i = j = 0\n        minWindow = ln_s + 1\n        output = ""\n        \n        #ln_t will act as my counter.\n        while i < ln_s:\n            if s[i] in dct:\n                # count how many needed chars are decremented\n                if dct[s[i]] > 0:\n                    ln_t -= 1\n                    \n                # decrement from the dict even if it leads to negative\n                # so that I can take care of cases such as "AZBBCA" where I\n                # need to find "ABC"\n                dct[s[i]] -= 1\n            \n            # shrink the window size\n            # and get the result and make it non-valid window\n            # so that I can look forward\n            while ln_t == 0:\n                if i - j + 1 < minWindow:\n                    minWindow = i - j + 1\n                    output = s[j: i+1]\n                \n                if s[j] in dct:\n                    dct[s[j]] += 1\n                    \n                    # I added a char from shrinking window\n                    # which is needed for me to get "T"\n                    if dct[s[j]] > 0:\n                        ln_t += 1\n                    \n                j += 1\n                    \n            i += 1\n        \n        return "" if minWindow == ln_s + 1 else output
['Sliding Window', 'Python', 'Python3']