LeetCode - Minimum Window Substring
2015-04-01 06:09
381 查看
https://leetcode.com/problems/minimum-window-substring/
这道题跟之前那个Longest Substring Without Repeating Characters 差不多,都是有一个window,然后当满足条件时,就调节两边的指针,直到遍历整个指针为止:
注意,这里的HashTable放的是除了start和end之间的字符串外,还需要的各种字符的个数,这个个数有可能是负数,说明有些字符出现了比要求的次数多。
如果找到一个字符串,但它不一定是最小的,要右移start直到略过不需要的字符,到达第一个我们肯定需要的字符为止,不需要的字符包括出现次数多余要求次数的字符和不要求的字符。
这道题跟之前那个Longest Substring Without Repeating Characters 差不多,都是有一个window,然后当满足条件时,就调节两边的指针,直到遍历整个指针为止:
注意,这里的HashTable放的是除了start和end之间的字符串外,还需要的各种字符的个数,这个个数有可能是负数,说明有些字符出现了比要求的次数多。
如果找到一个字符串,但它不一定是最小的,要右移start直到略过不需要的字符,到达第一个我们肯定需要的字符为止,不需要的字符包括出现次数多余要求次数的字符和不要求的字符。
public class Solution { public String minWindow(String S, String T) { if(T==null || T.length()==0 || S == null || S.length()==0) 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 start = 0; int end = 0; int minLen = S.length()+1; int minStart = 0; while(end < S.length()){ char c= S.charAt(end); if(map.containsKey(c)){ map.put(c, map.get(c)-1); if(map.get(c)>=0){ count++; while(count==T.length()){ if(minLen > (end-start+1)){ minLen = end-start+1; minStart = start; } if(map.containsKey(S.charAt(start))){ map.put(S.charAt(start), map.get(S.charAt(start))+1); if(map.get(S.charAt(start))>0) count--; } start++; } } } end++; } if(minLen>S.length()) return ""; return S.substring(minStart, minStart+minLen); } }
相关文章推荐
- Minimum Window Substring 最小子串窗口@LeetCode
- LeetCode Minimum Window Substring
- LeetCode -- Minimum Window Substring
- leetcode — minimum-window-substring
- LeetCode 76 Minimum Window Substring
- LEETCODE: Minimum Window Substring
- 【LeetCode】 Minimum Window Substring
- LeetCode Minimum Window Substring
- LeetCode Minimum Window Substring
- [LeetCode] Minimum Window Substring
- LeetCode76 Minimum Window Substring(两种解法)
- [leetcode] Minimum Window Substring
- leetcode Minimum Window Substring
- leetcode--Minimum Window Substring
- [leetcode]Minimum Window Substring
- leetcode:Minimum Window Substring 细致分析
- [LeetCode]Minimum Window Substring
- [LeetCode] Minimum Window Substring
- leetcode 76 Minimum Window Substring
- LeetCode Minimum Window Substring