美文网首页
76. Minimum Window Substring

76. Minimum Window Substring

作者: Jeanz | 来源:发表于2017-12-21 09:10 被阅读0次

Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).

For example,

S = "ADOBECODEBANC"
T = "ABC"
Minimum window is "BANC".

Note:
If there is no such window in S that covers all characters in T, return the empty string "".

If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.

一刷:
题解
首先我们给自己的target定义一个hash, 由长度targetnum和词频数组targethash构成。 然后用subwindow. 当前字符为ch

  1. targethash[ch]--如果出现在词频数组targethash中,词频大于0, 那么新的substring, sourcenum++。直到sourcenum== targetnum
    那么从头开始减去。。每次减去,targethash[ch]++。 如果targethash[ch]==0, sourcenum--
public class Solution {
    int initTargetHash(int []targethash, String Target) {
        int targetnum =0 ;
        for (char ch : Target.toCharArray()) {
            targetnum++;
            targethash[ch]++;
        }
        return targetnum;
    }
    
    public String minWindow(String Source, String Target) {
        // queueing the position that matches the char in T
        int ans = Integer.MAX_VALUE;
        String minStr = "";
        
        int[] targethash = new int[256];
        
        int targetnum = initTargetHash(targethash, Target);
        int sourcenum = 0;
        int j = 0, i = 0;
        for(i = 0; i < Source.length(); i++) {
            if(targethash[Source.charAt(i)] > 0)
                sourcenum++;
            
            targethash[Source.charAt(i)]--;
            while(sourcenum>=targetnum) {
                if(ans > i - j + 1) {
                    ans = Math.min(ans, i - j + 1);
                    minStr = Source.substring(j, i + 1);
                }
                targethash[Source.charAt(j)]++;
                if(targethash[Source.charAt(j)] > 0)
                    sourcenum--;
                j++;
            }
        }
        return minStr;
    }
}

相关文章

网友评论

      本文标题:76. Minimum Window Substring

      本文链接:https://www.haomeiwen.com/subject/xmfpqxtx.html