class Solution {
public String minWindow(String s, String t) {
Map<Character,Integer> window=new HashMap<>();
Map<Character,Integer> needs=new HashMap<>();
int left=0;
int right=0;
int start=0;
for(int i=0;i<t.length();i++){
char ch=t.charAt(i);
needs.put(ch,needs.getOrDefault(ch,0)+1);
}
int match=0;
int minLen=Integer.MAX_VALUE;
while(right<s.length()){
char ch1=s.charAt(right);
if(needs.containsKey(ch1)){
window.put(ch1,window.getOrDefault(ch1,0)+1);
if(window.get(ch1).intValue()==needs.get(ch1).intValue()){
match++;
}
}
right++;
while(match==needs.size()){
if(right-left<minLen){
start=left;
minLen=right-left;
}
char ch2=s.charAt(left);
if(needs.containsKey(ch2)){
window.put(ch2,window.getOrDefault(ch2,0)-1);
if(window.get(ch2).intValue()<needs.get(ch2).intValue()){
match--;
}
}
left++;
}
}
return minLen==Integer.MAX_VALUE?"":s.substring(start,start+minLen);
}
}
leetcode 76最小覆盖子串
最新推荐文章于 2024-03-18 14:09:54 发布