You are given two strings s and t made of English letters. Return the shortest substring of s that contains every character of t, repeats included: if a letter appears twice in t, the substring must contain it at least twice.
If no substring of s contains all the characters of t, return an empty string, "". Uppercase and lowercase letters are different characters.
A substring is a run of consecutive characters of s. The tests are made so that the answer is unique.
Example 1:
Input: s = "ADOBECODEBANC", t = "ABC" Output: "BANC" Explanation: "BANC" contains an A, a B and a C, and no shorter substring contains all three. "ADOBEC" and "CODEBA" contain them too, but they are longer.
Example 2:
Input: s = "a", t = "a" Output: "a" Explanation: s itself contains every character of t, and there is nothing shorter to try.
Example 3:
Input: s = "a", t = "aa" Output: "" Explanation: t needs two a's, but s has only one, so no substring works. The expected output shows an empty line for it.
Constraints:
1 <= s.length, t.length <= 105sandtare made of uppercase and lowercase English letters only (a to z, A to Z).
Note:
Your algorithm should run in O(n + m) time, where n is the length of s and m the length of t, and use O(1) extra space: one count for each character code.
Free plan: 30 tutor messages. Premium is unlimited.
