最小覆盖子串

复制代码
public static String minWindow2(String s, String t){
    if (t.length()>s.length()){
        return "";
    }
    HashMap<Character, Integer> hashMap = new HashMap<>();
    for (Character i:t.toCharArray()){
        if (hashMap.containsKey(i)){
            hashMap.put(i,hashMap.get(i)-1);
        }else{
            hashMap.put(i,-1);
        }
    }
    //滑动窗口
    int start=0;
    int end=0;
    int max=Integer.MAX_VALUE;
    String res = "";
    while (end<s.length()){
        //不为null
        if (hashMap.get(s.charAt(end))!=null){
            hashMap.put(s.charAt(end),hashMap.get(s.charAt(end))+1);
            //判断符合不
            if (test18(hashMap)){
                //将start往后移动
                while (test18(hashMap)&&start<=end){
                    //更改max
                    if (end-start+1<max){
                        max = end-start+1;
                        res = s.substring(start,end+1);
                    }
                    if (hashMap.get(s.charAt(start))!=null){
                        //减去1
                        hashMap.put(s.charAt(start),hashMap.get(s.charAt(start))-1);
                    }
                    start++;
                }
                end++;
            }else{
                end++;
            }
        }else{
            end++;
        }
    }
    return res;
}
public static boolean test18(HashMap<Character, Integer> hashMap){
    for (Integer i:hashMap.values()){
        if (i<0){
            return false;
        }
    }
    return true;
}
相关推荐
二进制小甜豆2 小时前
网络原理 TCP/IP
java·学习
yxc_inspire2 小时前
常见排序算法记录和理解
算法·排序
chirrupy_hamal2 小时前
IntelliJ IDEA 保姆级使用教程
java·intellij idea
D_aniel_3 小时前
Leetcode:回文链表
java·算法·leetcode·链表
Sheep Shaun3 小时前
C++类与对象—下:夯实面向对象编程的阶梯
c语言·开发语言·数据结构·c++·算法
软件2054 小时前
【登录流程图】
java·前端·流程图
yi个名字4 小时前
链表高级操作与算法
数据结构·算法·链表
wuqingshun3141594 小时前
蓝桥杯 19. 植树
c++·算法·蓝桥杯·深度优先·动态规划
王禄DUT5 小时前
网络延时 第四次CCF-CSP计算机软件能力认证
c++·算法
福居路冥想的草莓5 小时前
矩阵置零(中等)
数据结构·算法·矩阵