首页 > 代码库 > leetcode - Minimum Window Substring
leetcode - Minimum Window Substring
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.
class Solution { public: std::string minWindow(std::string S, std::string T) { if (S.empty() || T.empty()) { return ""; } int count = T.size(); int require[128] = {0}; bool chSet[128] = {false}; for (int i = 0; i < count; ++i) { require[T[i]]++; chSet[T[i]] = true; } int i = -1; int j = 0; int minLen = INT_MAX; int minIdx = 0; while (i < (int)S.size() && j < (int)S.size()) { if (count) { i++; require[S[i]]--; if (chSet[S[i]] && require[S[i]] >= 0) { count--; } } else { if (minLen > i - j + 1) { minLen = i - j + 1; minIdx = j; } require[S[j]]++; if (chSet[S[j]] && require[S[j]] > 0) { count++; } j++; } } if (minLen == INT_MAX) { return ""; } return S.substr(minIdx, minLen); } };
leetcode - Minimum Window Substring
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。