标签:style color io os ar for sp on amp
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
标签:style color io os ar for sp on amp
原文地址:http://blog.csdn.net/akibatakuya/article/details/40477899