1. class Solution {
    2. public String minWindow(String s, String t) {
    3. HashMap<Character,Integer> need = new HashMap<>();
    4. HashMap<Character,Integer> window = new HashMap<>();
    5. for(char ch : t.toCharArray()){
    6. need.put(ch,need.getOrDefault(ch,0) + 1);
    7. }
    8. int left = 0;
    9. int right = 0;
    10. int valid = 0;
    11. int start = 0;
    12. int len = Integer.MAX_VALUE;
    13. while(right < s.length()){
    14. char c = s.charAt(right);
    15. right++;
    16. if(need.containsKey(c)){
    17. window.put(c,window.getOrDefault(c,0) + 1);
    18. ////这个得改成equals
    19. if(window.get(c).equals(need.get(c))){
    20. valid++;
    21. }
    22. }
    23. while(valid == need.size()){
    24. if(right - left < len){
    25. start = left;
    26. len = right - left;
    27. }
    28. char d = s.charAt(left);
    29. left++;
    30. if(need.containsKey(d)){
    31. //这个得改成equals
    32. if(window.get(d).equals(need.get(d))){
    33. valid--;
    34. }
    35. window.put(d,window.getOrDefault(d,0) - 1);
    36. }
    37. }
    38. }
    39. return len == Integer.MAX_VALUE ? "" : s.substring(start,start + len);
    40. }
    41. }