using System;
using System.Collections.Generic;
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return string字符串
*/
public string minWindow (string S, string T) {
int left = 0, right = 0;
Dictionary<char, int> dic = new Dictionary<char, int>();
for(int i = 0; i < T.Length; i++){
if(!dic.ContainsKey(T[i])) dic[T[i]] = 0;
dic[T[i]]++;
}
int need = 0;
int start = 0;
int len = S.Length + 1;
while(right < S.Length){
//Console.WriteLine("right:"+right);
if(dic.ContainsKey(S[right])){
if(--dic[S[right]] == 0) need++;
}
while(need == dic.Count){
if(right - left + 1 < len){
start = left;
len = right - left + 1;
}
if(dic.ContainsKey(S[left])){
if(dic[S[left]]++ == 0) need--;
//Console.Write("left:"+left+"need:"+need);
}
left++;
}
right++;
}
if(len == S.Length + 1) return "";
return S.Substring(start, len);
}
}