题解 | #最小覆盖子串#

最小覆盖子串

https://www.nowcoder.com/practice/c466d480d20c4c7c9d322d12ca7955ac

import java.util.*;


public class Solution {
    /**
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return string字符串
     */
    public String minWindow (String S, String T) {
        // write code here
        Map<Character,Integer> s_map = new HashMap<>();
        Map<Character,Integer> t_map = new HashMap<>();
        //T中的数据存入t_map
        for(int i = 0;i<T.length();i++){
            t_map.put(T.charAt(i), t_map.containsKey(T.charAt(i)) ? t_map.get(T.charAt(i))+1 : 1 );
        }
        int left = 0;
        int right = 0;
        int result_length = Integer.MAX_VALUE;
        String ans = "";
       while(right < S.length()){
           s_map.put(S.charAt(right), s_map.containsKey(S.charAt(right)) ? s_map.get(S.charAt(right)) +1 : 1 );
           while(isCover(s_map,t_map)){
               if(result_length > right - left +1){
                   result_length = right - left +1;
                   ans = S.substring(left,right+1);
               }
                s_map.put(S.charAt(left), s_map.get(S.charAt(left)) - 1 );
                if(s_map.get(S.charAt(left)) == 0){
                    s_map.remove(S.charAt(left));
                }
                left++;
           }
           right++;
       }
        return ans;
    }

    public boolean isCover(Map<Character,Integer> s_map,Map<Character,Integer> t_map){
        for(Character key : t_map.keySet()){
            if(!s_map.containsKey(key)){
                return false;
            }else if(s_map.get(key) < t_map.get(key)){
                return false;
            }
            
        }
        return true;
    }
}

全部评论

相关推荐

07-17 12:07
门头沟学院 Java
勇敢牛牛不怕困难
投递OPPO等公司10个岗位
点赞 评论 收藏
分享
机械打工仔:不管啥专业,找工作改简历的第一课先把你那排版改了,简历上不要写个人简历四个字,找你要简历的谁不知道这个是简历?而且还占那么多空间,直接把自己名字和基础信息写上面,整体字体大一些。 还有这种经典两页简历一页大空白,导出PDF的时候多了一页几乎全是白的你自己看着不难受吗随手的事为啥不能改掉呢,这是态度问题,你试想一下你是HR你打开简历看到格式都没调整过会是什么感受?你自己都不重视你的简历,HR更不会在意。 然后内容你那个做两年咖啡就别往里写了,简历在精不在多,你在往你的简历里打字的时候就要想好这东西对你要找的工作有没有帮助。自我评价写一行就行了,不如给专业技能单开一栏。核心课程均分90这个真别写了,把你上过的有用的专业课列出来也行。有很多地方废话很多的精炼一下,比如你校内项目第一个写的那些,全然没有重点。 好好修改一下,我看你内容也挺优秀的,别被一个随便做的简历耽误了,我一个同专业的打工人看了都揪心更别说一天看几百份简历的HR
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务