最小覆盖子串

复制代码
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;
}
相关推荐
fakaifa9 分钟前
【最新版】西陆洗车系统源码全开源+uniapp前端+搭建教程
java·小程序·uni-app·php·源码下载·西陆洗车·洗车小程序
shenyan~16 分钟前
关于 smali:2. 从 Java 到 Smali 的映射
java·开发语言
一只叫煤球的猫18 分钟前
实习生踩坑记:Redis分布式锁为什么总是"失效"?看门狗机制深度解析
java·后端·性能优化
浪客川19 分钟前
生成JavaDoc文档
java
橘子青衫24 分钟前
解锁多线程编程:深入探索同步容器与并发容器
java·后端
攒了一袋星辰29 分钟前
Spring @Value注解的依赖注入实现原理
java·后端·spring
星star~30 分钟前
MyBatis相关面试题
java·开发语言·mybatis
ChicagoTypewriter33 分钟前
定时线程池失效问题引发的思考
java
MABO-mb36 分钟前
Java实现命令行图书管理系统(附完整源码)
java·开发语言
小和尚敲木头1 小时前
krpano 字符串拼接,传参。
java·linux·前端