【LeetCode 每日一题】76. 最小覆盖子串 | 手写图解版思路 + 代码讲解

作者: 睡不醒的鲤鱼分类: 野生技能协会 发布时间: 2022-03-22 03:18:00 浏览:9239 次

【LeetCode 每日一题】76. 最小覆盖子串 | 手写图解版思路 + 代码讲解

qwerty1618:
这个题感觉讲得太快了,例子最后几步(也是最重要的几步)没有展示。[喜极而泣]

【回复】前面讲的很不错,后面最后几步可以看下这个视频,讲的很清楚https://www.bilibili.com/video/BV16y4y1u7gC/?spm_id_from=333.337.search-card.all.click&vd_source=5db5e59bcfc2abaa0c6c1de9e44f5bfd
bbssbbss:
解法有问题,没有考虑到缩减后还要求为最小字符的特性,如ADOBECODEBANC,C重复后根据判断条件会缩减到ODEBANC,但是其实最小字符是BANC,实际并无法得到最小字符串

【回复】map没有那个字符用【】会自动生成一个0的键值 while那边会动的
【回复】没问题,while会继续比较字符O在hs和hr中的值,这导致j一直后挪直到指向B,最后截取BANC返回
T145Y:
讲的清楚明白,比力扣官方题解好多了

【回复】可惜只能一次性投两枚硬币
爱你de放荡不羁:
这个好像不对吧,应该扩到所有字符都包含再减少,但你的结果是对的。

【回复】回复 @小陆乱撞_Study : 当j指向第1个B时已经求出答案了,发生收缩也没关系(实际这一步不会发生)。因为j在指向A的时候,窗口不会进行收缩,i会进行到末尾结束。
【回复】对于ABBC 这个例子。 方法访问到第二个B的时候就会开始缩小窗口,这样i指针会知道最后一个,j指针会指向第二个B 。这样结果不会不对吗?有大佬出来解释一下吗
Alex抱着爆米花:
这里有个bug,就是在while中添加一个判断 hs【S.charAt(j)】 > ht【S.charAt(j)】 && cnt == T.length(),就是只有满足子串要求才能收缩左侧 ,不然过不了 "a" , "b" 的test

【回复】是的,这里最好做下越界判断,保证在 j <= i 时进行收缩
就是qy啊:
这里大于就更新i似乎没有必要?题目中说子串中字符的数量可以大于t中字符的数量,这样每次一大于就更新会不会导致找不结果

2333Maggie2333:
有个问题,cnt满足条件就++自增,那不是找到第一个满足条件的,之后都满足不了cnt == t.size()了吗

【回复】会一直满足,因为只要找到一个满足的子串后,if都不会再为true,也就是不再执行cnt++

计算机 学习 算法 程序员 笔试 面试 LeetCode 力扣 打卡挑战 技能提升营

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读