# leetcode76. 最小覆盖子串

### 滑动窗口

class Solution {
HashMap<Character,Integer> tMap = new HashMap<>();
HashMap<Character,Integer> sMap = new HashMap<>();
public String minWindow(String s, String t) {
for (int i = 0; i < t.length(); i++) {
//初始化tMap
tMap.put(t.charAt(i),tMap.getOrDefault(t.charAt(i),0) + 1);
}
int l = 0,r = 0, minLen = Integer.MAX_VALUE;
int ansR = -1,ansL = -1;
while (r < s.length()) {
//左窗口不动，右窗口动
if (r < s.length() && tMap.containsKey(s.charAt(r))) {
//窗口右移，看看有没有字母加进来
sMap.put(s.charAt(r),sMap.getOrDefault(s.charAt(r),0) + 1);
}
while (check() && l <= r) {
//此时右窗口不动，左窗口开始动
if (r - l + 1 < minLen) {
//新长度裁定
minLen = r - l + 1;
ansL = l;
ansR = l + minLen;
}
if (tMap.containsKey(s.charAt(l))) {
//窗口左移，要减掉出去的字母
sMap.put(s.charAt(l),sMap.getOrDefault(s.charAt(l),0) - 1);
}
l++;
}
r++;
}
return ansL == -1 ? "" : s.substring(ansL,ansR);
}
public boolean check() {
Set<Map.Entry<Character,Integer>> tSet = tMap.entrySet();
Iterator<Map.Entry<Character,Integer>> iterator = tSet.iterator();
while (iterator.hasNext()) {
Map.Entry<Character,Integer> entry = iterator.next();
char k = entry.getKey();
int v = entry.getValue();
if (sMap.getOrDefault(k,0) < v) {
return false;
}
}
return true;
}
}


leetcode 103

08-19 31

05-10 30

10-04 28

03-23 22

08-11 29

01-19 87

05-04 431

04-03 10

05-03 39

05-23 39

01-02 454

08-24 163

10-09 83

02-25 169

03-22 1万+

03-19 80万+

04-14 56万+

02-19 16万+

02-27 7万+

02-28 3万+

03-01 12万+

03-01 11万+

03-03 5664

03-04 12万+

03-05 9304

03-05 5万+

03-08 6万+

03-08 1万+

04-25 5万+

03-10 12万+

03-10 17万+

03-10 6044

03-12 10万+

03-13 10万+

03-16 9715

03-19 7万+

03-20 4431

03-23 1万+

03-24 2万+

03-25 2万+

03-25 8万+

03-27 1万+

03-29 20万+

03-29 9万+

03-30 14万+

05-21 2599

03-31 1万+

03-23 9850

04-02 3万+

05-06 2万+

04-05 1万+

04-06 6万+

04-09 1万+

04-09 7万+

04-09 4381

04-10 3978

04-11 2万+

04-15 5万+

04-18 1万+

04-18 3485

04-18 4万+

04-20 3万+

04-24 2万+

04-26 2687

04-24 3662

04-30 5927

05-16 4万+

05-08 3万+

05-10 1644

05-11 2万+

05-13 6329

05-19 5440

05-13 9470

05-14 3306

05-14 5691

05-16 1717

05-16 1153

05-16 9128

#### IT 程序员、软件工程师值得考的证书有哪些？有什么证书可以考？

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客