JAVA minimum-window-substring

public class Test {

    public static void main(String[] args) {

        String orgStr = "ADOBECODEBANC";
        String findStr = "ABC";
        String resStr = "";

        int maxLength = orgStr.length();
        int count = findStr.length();

        HashMap<Character, Integer> findHashMap = new HashMap<>();
        for (int i = 0; i < findStr.length(); i++) {
            if( findHashMap.containsKey(findStr.charAt(i))){
                findHashMap.put( findStr.charAt(i), findHashMap.get(findStr.charAt(i))+1 );
            }else{
                findHashMap.put( findStr.charAt(i),1 );
            }
        }

        Character curChar = null , leftChar ;

        for( int j =0 , left = 0 ; j < orgStr.length(); j++ ){
            curChar = orgStr.charAt(j);
            if( findHashMap.containsKey(curChar) ){
                findHashMap.put(curChar,findHashMap.get(curChar) -1 );
                if( findHashMap.get(curChar) == 0  ){
                    count--;
                }
            }

            while( count == 0 ){

                if( j - left < maxLength ){
                    resStr = orgStr.substring(left, j+1);
                    maxLength = (j - left);
                }

                leftChar = orgStr.charAt(left);
                if( findHashMap.containsKey(leftChar) ){
                    findHashMap.put(leftChar, findHashMap.get(leftChar)+1);
                    if( findHashMap.get(leftChar) > 0){
                        count++;
                    }
                }
                left++;
            }
        }
        System.out.println(resStr);
    }
}

  

posted @ 2020-09-17 16:48  ﹏Sakura  阅读(246)  评论(0)    收藏  举报