class Solution { public String minWindow(String s, String t) { 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; int right = 0; int valid = 0; int start = 0; int len = Integer.MAX_VALUE; while(right < s.length()){ char c = s.charAt(right); right++; if(need.containsKey(c)){ window.put(c,window.getOrDefault(c,0) + 1); ////这个得改成equals if(window.get(c).equals(need.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)){ //这个得改成equals if(window.get(d).equals(need.get(d))){ valid--; } window.put(d,window.getOrDefault(d,0) - 1); } } } return len == Integer.MAX_VALUE ? "" : s.substring(start,start + len); }}