*力扣第76题:最小覆盖子串(滑动窗口、哈希表)
一、题目内容
二、代码
public String minWindow(String s, String t) {
HashMap<Character,Integer> hs=new HashMap<Character,Integer>();
HashMap<Character,Integer>ht =new HashMap<Character,Integer>();
for(int i=0;i<t.length();i++)
{
ht.put(t.charAt(i),ht.getOrDefault(t.charAt(i),0)+1);
}
String rnt="";
int cnt=0;
int len=1000000;
for(int i=0,j=0;i<s.length();i++){
hs.put(s.charAt(i),hs.getOrDefault(s.charAt(i),0)+1);
if(ht.containsKey(s.charAt(i))&&hs.get(s.charAt(i))<=ht.get(s.charAt(i)))
cnt++;
while(j<i&&(!ht.containsKey(s.charAt(j))||hs.get(s.charAt(j))>ht.get(s.charAt(j)))){
int count=hs.get(s.charAt(j))-1;
hs.put(s.charAt(j),count);
j++;
}
if(cnt==t.length()&&i-j+1<len){
len=i-j+1;
rnt=s.substring(j,i+1);
}
}
return rnt;
}