Leetcode231: Minimum Window Substring
来源:互联网 发布:墙上网络接口怎么接线 编辑:程序博客网 时间:2024/06/15 09:57
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.
双指针思想,尾指针不断往后扫,当扫到有一个窗口包含了所有T的字符,然后再收缩头指针,直到不能再收缩为止。最后记录所有可能的情况中窗口最小的
class Solution {private: int count1[256]; int count2[256];public: string minWindow(string S, string T) { // Start typing your C/C++ solution below // DO NOT write int main() function if (T.size() == 0 || S.size() == 0) return ""; memset(count1, 0, sizeof(count1)); memset(count2, 0, sizeof(count2)); for(int i = 0; i < T.size(); i++) { count1[T[i]]++; count2[T[i]]++; } int count = T.size(); int start = 0; int minSize = INT_MAX; int minStart; for(int end = 0; end < S.size(); end++) { if (count2[S[end]] > 0) { count1[S[end]]--; if (count1[S[end]] >= 0) count--; } //找到了包含所有字符的end位置 if (count == 0) {//从起点向后压缩,直到不能压缩为止 while(true) { if (count2[S[start]] > 0) { if (count1[S[start]] < 0) count1[S[start]]++; else break; } start++; } if (minSize > end - start + 1) { minSize = end - start + 1; minStart = start; } } } if (minSize == INT_MAX) return ""; string ret(S, minStart, minSize); return ret; }};
0 0
- Leetcode231: Minimum Window Substring
- LeetCode: Minimum Window Substring
- LeetCode Minimum Window Substring
- LeetCode : Minimum Window Substring
- [LeetCode] Minimum Window Substring
- [Leetcode] Minimum Window Substring
- Minimum Window Substring
- LeetCode: Minimum Window Substring
- Minimum Window Substring
- [LeetCode]Minimum Window Substring
- Minimum Window Substring
- Minimum Window Substring
- [leetcode]Minimum Window Substring
- Minimum Window Substring
- Leetcode:Minimum Window Substring
- LeetCode-Minimum Window Substring
- [leetcode] Minimum Window Substring
- [leetcode] Minimum Window Substring
- python核心编程-搜索与替换
- 操作系统学习笔记:分布式文件系统
- SpringMVC 使用JSR-303进行校验 @Valid
- zabbix 安装容易出错的地方
- iOS状态栏颜色设置
- Leetcode231: Minimum Window Substring
- 《笨办法学Python》 第12课手记
- QSettings介绍
- Nginx、LVS及HAProxy负载均衡软件的优缺点详解
- 闪回数据归档 上
- 课堂笔记
- VS2013 生成sqlite3动态链接库
- PreferenceActivity 的使用
- Writing Hello World Bootloader