Учитывая строку S и строку T, найдите минимальное окно в S, которое будет содержать все символы в T со сложностью O (n).
Пример:
Input: S = "ADOBECODEBANC", T = "ABC"
Output: "BANC"
Примечание:
- Если в S нет такого окна, которое охватывало бы все символы в T, верните пустую строку "".
- Если есть такое окно, вы гарантированно, что всегда будет только одно уникальное минимальное окно в S.
Я написал ниже код Python, который находит всеокно в основной строке "s", где находятся все символы строки шаблона "t".Но я не могу минимизировать это окно и поддерживать O (n) временной сложности.Поэтому, пожалуйста, помогите мне в приведенном ниже коде Python: -
def min_window_size(s,t):
begin=0
end=0
dict={}
list=[]
count=0
len_t=len(t)
#Creating character counts in string "t" to be searched
for c in t:
dict.setdefault(c,0)
dict[c]+=1
print(s+" "+t)
#Iterating over main string "s" where minimum window need to be checked
for i in range (len(s)):
if s[i] in dict:
#Increasing the counter whenever character from "t" is found in "s"
count+=1
end+=1
#As soon as count equal to length of string "t" it means we have found all characters of "t" in "s"
if count==len_t:
#Appending the found window into empty list
list.append(s[begin:end])
index=begin
#Increase begin counter to forward so that next window after first can be searched
begin=end
#Reset counter so that we can continue to look for new window
count=0
print list
if list==[]:
return " "
else:
return (min(list,key=len))
Это упражнение является частью моего учебного процесса и содержит вопросы ниже
- Как я могу изменить свой код, чтобы я могтакже начать сворачивать окно, в котором присутствуют все символы строки "t"?
- В моем коде я думал проверить отдельное найденное окно и затем попытаться уменьшить его, перемещая указатель начала, но я несмог придумать код sudo или фактический код Python для того же самого в моей текущей программе.
- Чтобы изучить и сделать мою логику робастной, какой подход мне выбрать?Когда я обычно застреваю, я пытаюсь найти решение?Это правильный подход?Любая помощь или направление в этом приветствуется.