【Leetcode Daily】1358包含所有三种字符的子字符串数目
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个字符串,由 a b c 组成,找出其中所有至少包含a b c各一个的子字符串。
思路分享
不定长滑动窗口变式,变在“至少”,也就是说,一旦找到一个合适的窗口,就是一个合适的窗口右端点,窗口左侧一直往左都是答案,所以最终计算答案时,直接看包含 a b c 至少各一个的最短窗口的左端数值之和。
不过具体判断窗口是否满足条件,除了直接计算对三个字母的记录是否都非零外,也可以引入另一个变量统计当前字母为零的个数,看起来更快,但实际上差别不大,复杂度都是O(1)。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!