一、题目描述
二、模板套入
class Solution {
public String minWindow(String s, String t) {
if(s.length()<t.length()){
return "";
}
HashMap<Character,Integer> need=new HashMap<>();
HashMap<Character,Integer> window=new HashMap<>();
for(char ch:t.toCharArray()){
need.put(ch,need.getOrDefault(ch,0)+1);
}
int left = 0, right = 0;
int valid = 0;
int start = 0,len = s.length()+1;
while(right<s.length()){
char c=s.charAt(right);
right++;
if(need.containsKey(c)){
window.put(c,window.getOrDefault(c,0)+1);
if(need.get(c).equals(window.get(c)))
valid++;
}
while(valid==need.size()){
if(right-left<len){
start=left;
len=right-left;
}
char d=s.charAt(left);
left++;
if(need.containsKey(d)){
if(need.get(d).equals(window.get(d))){
valid--;
}
window.put(d,window.get(d)-1);
}
}
}
return len== s.length()+1 ? "" : s.substring(start,start+len) ;
}
}
- 解题思路: