76. Minimum Window Substring
来源:互联网 发布:爱奇艺cyida软件源 编辑:程序博客网 时间:2024/04/30 04:52
问题描述
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.
Subscribe to see which companies asked this question.
解决思路
简而言之,就是利用两个指针(begin,end)和一个计数器来进行计算window长度和判断是否达到子串的约束(这里就是每个单词都出现)
看到leetcode的大神用一个模版解决了类似的寻找有约束子串的问题。不得不服啊。 还是贴代码吧。 天天跪拜大神。代码
模版代码
int findSubstring(string s){ vector<int> map(128,0); int counter; // check whether the substring is valid int begin=0, end=0; //two pointers, one point to tail and one head int d; //the length of substring for() { /* initialize the hash map here */ } while(end<s.size()){ if(map[s[end++]]-- ?){ /* modify counter here */ } while(/* counter condition */){ /* update d here if finding minimum*/ //increase begin to make it invalid/valid again if(map[s[begin++]]++ ?){ /*modify counter here*/ } } /* update d here if finding maximum*/ } return d; }
本题解决代码
class Solution {public: string minWindow(string s, string t) { vector<int> map(128,0); for (int i = 0; i < t.size(); ++i) ++map[t[i]]; int begin = 0, end = 0, head = 0, d = INT_MAX; int counter = t.size(); while(end < s.size()) { if (map[s[end++]]-- > 0) --counter; while(counter == 0) { if (d > end-begin) { d = end - begin; head = begin; } if (map[s[begin++]]++ == 0) { ++counter; } } } return d == INT_MAX ? "" : s.substr(head,d); }};
0 0
- 76. Minimum Window Substring
- 76.Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 76. Minimum Window Substring
- 问题 I: LianLianKan
- linux下mysql主从复制搭建过程
- mongodb 主从
- 242. Valid Anagram
- vertical-align:middle居中,Firefox中换行问题
- 76. Minimum Window Substring
- spring mvc 是否要设置@Scope("prototype")
- JAVA中3种将byte转换为String的方法
- 安装CocoaPods出现错误解决方法
- unity5之导航网格寻路系统-2使用NavMeshAgent实现类型英雄联盟右键行走功能
- ural1010 Discrete Function
- socket
- 设计模式笔记二:抽象工厂模式
- python安装库文件,安装needle 测试框架