package main
/**
*
* @param S string字符串
* @param T string字符串
* @return string字符串
*/
func minWindow( S string , T string ) string {
if S==""||T==""||len(T)>len(S){return ""}
tSet:=map[byte]int{}
for i:=0;i<len(T);i++{
tSet[T[i]]-=1
}
q:=[]int{}
res:=S
haveCom:=false
for i:=0;i<len(S);i++{
if _,ok:=tSet[S[i]];ok{
tSet[S[i]]+=1
q = append(q, i)
}
for check(tSet){
haveCom=true
if q[len(q)-1]-q[0]<len(res)-1{
res=S[q[0]:q[len(q)-1]+1]
}
tSet[S[q[0]]]-=1
q=q[1:]
}
}
if !haveCom{return ""}
return res
}
func check(m map[byte]int)bool{
for _,v:=range m{
if v<0{
return false
}
}
return true
}