首页 > 代码库 > [leetcode] Minimum WIndow
[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; }}
[leetcode] Minimum WIndow
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。