[76] 最小覆盖子串

复制代码
 1 /**
 2  * @param {string} s
 3  * @param {string} t
 4  * @return {string}
 5  */
 6 var minWindow = function (s, t) {
 7   if (s.length < t.length) {
 8     return '';
 9   };
10   const map = new Map();
11   for (const key of t) {
12     map.set(key, (map.get(key) || 0) + 1);
13   };
14   let ans = '';
15   // const arr = [];
16   let need = t.length;
17   let left = 0;
18   for (let right = 0; right < s.length; right++) {
19     const c = s[right];
20     if (map.has(c)) {
21       map.set(c, map.get(c) - 1);
22       // arr.push(right);
23       if (map.get(c) >= 0) {
24         need -= 1;
25       }
26     }
27     while (need === 0) {
28       // const newAns = s.slice(arr[0], right + 1);
29       const newAns = s.slice(left, right + 1);
30       if (!ans) {
31         ans = newAns;
32       }
33       if (newAns.length < ans.length) {
34         ans = newAns;;
35       }
36       // const left = arr.shift();
37       // map.set(s[left], map.get(s[left]) + 1);
38       // need = map.get(s[left]);
39       const c = s[left];
40       if (map.has(c)) {
41         map.set(c, map.get(c) + 1);
42         if (map.get(c) === 1) {
43           need += 1;
44         }
45       }
46       left++;
47     }
48   }
49   return ans;
50 };
复制代码

 

posted @   人恒过  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示