[leetcode] Minimum WIndow

题目:(HashTable Two Point String)

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 emtpy string "".

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

题解:


有一个思想叫 滑动窗口:参考http://www.cnblogs.com/springfor/p/3872559.html

public class Solution {
    public String minWindow(String S, String T) {
        if(S.length()==0||T.length()==0||S==null||T==null)
           return "";

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

        int count=0;
        int pre=0;
        String res="";
        int min=S.length()+1;//equal = s.length() just set a initial value
        for(int i=0;i<S.length();i++)
        {
            if(map.containsKey(S.charAt(i)))
            {
                 map.put(S.charAt(i),map.get(S.charAt(i))-1);
                 if(map.get(S.charAt(i))>=0)
                   count++;
                 while(count==T.length())
                 {
                       if(map.containsKey(S.charAt(pre)))
                       {
                            map.put(S.charAt(pre),map.get(S.charAt(pre))+1);
                            if(map.get(S.charAt(pre))>0)
                            {
                                 if(min>i-pre+1)
                                 {
                                     min=i-pre+1;
                                     res=S.substring(pre,i+1);
                                 }
                                 count--;
                            }
                       }
                       pre++;
                 }
            }
        }
        return res;
    }
}
时间: 2024-08-10 09:19:45

[leetcode] Minimum WIndow的相关文章

LeetCode: Minimum Window Substring [076]

[题目] 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

[leetcode]Minimum Window Substring @ Python

原题地址:https://oj.leetcode.com/problems/minimum-window-substring/ 题意: 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" M

LeetCode &quot;Minimum Window Substring&quot; - STAR

Main reference: http://zhaohongze.com/wordpress/2014/01/04/leetcode-minimum-window-substring/ The ART of counting. So difficult and beautiful problem. It is all about dynamic window maintanence. Essentially, it is still a fancy linear scanning proced

[Leetcode] minimum window substring 最小字符窗口

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

[LeetCode] Minimum Window Substring 最小窗口子串

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 i

[LeetCode] Minimum Window Subsequence 最小窗口序列

Given strings S and T, find the minimum (contiguous) substring W of S, so that T is a subsequence of W. If there is no such window in S that covers all characters in T, return the empty string "". If there are multiple such minimum-length window

Leetcode Minimum Window Substring

题目地址:https://leetcode.com/problems/minimum-window-substring/ 题目解答: import java.util.HashMap; import java.util.Map; public class Solution { public String minWindow(String S, String T) { if(S == null || S.length() == 0 || T == null || T.equals("")

【leetcode】Minimum Window Substring

问题: 给定两个字符串,S,T,返回S中包含T中所有字符的最短的字串,若不存在,则返回"".时间复杂度为O(n). 例如:S = "ADOBCODEBANC" T = "ABC" 返回BANC 生活场景: 把问题具体化现实化一点.有n层楼,每层楼里放有一个物品,现在老板给你一个物品清单,里面是要你集齐的物品,你可以乘坐电梯,但是电梯只停一次,停在哪一层,就从哪一层开始向楼上搜集物品,至于要在那层停电梯,由你自己选择. 这里我们当然选择即能集齐物品

LeetCode[Hash Table]: Minimum Window Substring

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 windo