这他妈才是真真的答案,判断条件应该是 if(window[c]<=target[c]) count++
附上javascript Node 代码 function minWindow( S , T ) { if(S==T) return S let window = [],target = [] for(let i =0;i<T.length;++i) { if(!target[T[i]]) { target[T[i]] = 1 }else{ target[T[i]]++ } } for(let i =0;i<S.length;++i) { window[S[i]] = 0 } const MAX_LEN = 999999999 let left =0,right =0; let start = 0, minLen = MAX_LEN let count = 0 while(right<S.length) { let c = S[right] ++right if(target[c]){ window[c]++ if(window[c]<=target[c]) count++ } while(count==T.length) { if(right-left<minLen) { start = left minLen = right - left } c = S[left] ++left if(target[c]) { if(window[c]<=target[c]) count-- --window[c] } } } return minLen==MAX_LEN ?"": S.substr(start,minLen) }