题解 | #寻找完成任务所需最短时间#
寻找完成任务所需最短时间
https://www.nowcoder.com/practice/107342346ad44329a35c7e5b890e7d40
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param t string字符串 * @return string字符串 */ string minWindow(string s, string t) { // write code here map<char, int> mp; int min_len = 1e8; if (t.size() > s.size()) return ""; int left = 0, right = 0; int start = 0, end = 0; for (int i = 0; i < t.size(); i++) { mp[t[i]]++; } int need = t.size(); for (; right < s.size(); right++) { char c = s[right]; if (t.find_first_of(c) != string::npos) { if (mp[c] > 0) { need--; } mp[c]--; } while (need == 0) { if (right-left+1 < min_len) { min_len = right-left+1; start = left, end = right; } char c = s[left]; if (t.find_first_of(c) != string::npos) { if (mp[c] >= 0) { need++; } mp[c]++; } left++; } } if (min_len == 1e8) return ""; return s.substr(start, end-start+1); } };