LeetCode in Python 76. Minimum Window Substring
Posted Bossman listens to Indie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode in Python 76. 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).
Example:
Input: S = "ADOBECODEBANC", T = "ABC"
Output: "BANC"
Note:
If there is no such window in S that covers all characters in T, return the empty string "".
If there is such window, you are guaranteed that there will always be only one unique minimum window in S.
滑动窗口算法可解,用vector代替哈希表获得更快的速度,遍历s串时相应增加cnt,找到符合要求的window后开始缩小左边界,cnt不符合要求时扩大右边界。关键点是要先找到符合要求的window。
class Solution { public: string minWindow(string s, string t) { vector<int> stats(128, 0); int cnt = 0, left = 0, minLen = INT_MAX; string res = ""; for (char c : t) stats[c]++; for (int i = 0; i < s.size(); i++) { if (--stats[s[i]] >= 0) cnt++; while (cnt == t.size()) { //找到符合要求的window后再缩小左边界 if (i - left + 1 < minLen) { minLen = i - left + 1; res = s.substr(left, minLen); } if (++stats[s[left]] > 0) cnt--; left++; } } return res; } };
以上是关于LeetCode in Python 76. Minimum Window Substring的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 637 python3 76ms 二叉树的层平均值