Minimum Window Substring
来源:互联网 发布:济南犀牛软件培训 编辑:程序博客网 时间:2024/05/18 14:13
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.
解题思路:用两个标志位分别表示满足条件的字符串的头尾。尾部索引号确定利用满足当前字符串包含目标字符条件,起始的字符串确定起来比较麻烦,首先若起始的字符为目标字符,且已经搜索到的个数大于目标搜索数,则跳过,其次首字符不是目标字符也跳过;基本按这样的思路写就可以确定符合条件的字符串了,最后通过遍历确定最短的字符串即可。
#include<iostream>#include<vector>#include<string>#include<map>using namespace std;string minWindow(string S, string T) {map<char, int>SubstrMap; //目标字典(字符,相应个数)map<char, int>BesearchedMap; //已搜索到的字典for (auto &str : T)SubstrMap[str]++;int CountBesecrsh = 0; int minLength = INT_MAX;int minSubstrBegin = 0;int idx_begin = 0;for (int idx_end = 0; idx_end != S.size(); ++idx_end){if (SubstrMap.find(S[idx_end]) != SubstrMap.end()){BesearchedMap[S[idx_end]]++;if (BesearchedMap[S[idx_end]]<=SubstrMap[S[idx_end]])CountBesecrsh++;if (CountBesecrsh==T.size()) //表示当前搜索点为尾的字符串满足搜索条件{while (idx_begin<=idx_end){if (SubstrMap.find(S[idx_begin]) == SubstrMap.end()){idx_begin++;continue;}else if (BesearchedMap[S[idx_begin]] > SubstrMap[S[idx_begin]]){BesearchedMap[S[idx_begin]]--;idx_begin++;continue;}elsebreak;}int length = idx_end + 1 - idx_begin;if (length<minLength){minLength = length;minSubstrBegin = idx_begin;}}}}if (minLength == INT_MAX)return "";return S.substr(minSubstrBegin, minLength);}
0 0
- 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
- leetcode Minimum Window Substring
- 23种设计模式(11):命令模式(Command Pattern)
- java知识点:读万卷书,行万里路(三)
- 无语了!CSDN,对你太失望了!!!!
- 开源权限引擎——与邪恶主体战斗到底
- kettle的并行,集群和分区
- Minimum Window Substring
- android音乐柱状频谱实现
- poj 3386
- 利用hash 数组打印标题
- Qin Shi Huang's National Road System
- 网站注册时的邮箱验证demo
- Oracle--多表查询及子查询
- Android源码分析:AudioEffect
- JavaSwing组件:Jlist学习笔记