Day 23 30. 串联所有单词的子串
30. 串联所有单词的子串
题目
1 |
|
题目思路
- 1、困难题目,开局思考半小时,发现应该可以使用滑动窗口的解法
- 2、具体思想为使用两个 unordered_map,一个 up 来记录总的 words 里单词和对应的数量,另一个 ump 用来记录遍历的滑动窗口内的 words 中的单词和对应的数量。
- 3、遍历是增加一个单词长度,按照 ws 去移动窗口,对于每次档次遍历,维持窗口 l = r
- 4、若单词在 ump 里不存在,重置窗口并清空 ump;
- 5、单词在 ump 里存在,有两种清空,单词出现的次数超出 ump 中的那一个单词的次数,所以需要将左边界增大,即右移 l,如果 cnt 都满足即等于 ns,则插入 l 作为当前的答案值
1 |
|
复杂度
时间复杂度:整体复杂度为 O(ns * ws)
空间复杂度:O(ns * ws),可能有一些问题,有空再来思考
Day 23 30. 串联所有单词的子串
https://chaggle.github.io/2021/10/02/Leetcode/91-day/day-23/