3. Longest Substring Without Repeating Characters
给定一个字符串,返回其中不含有重复字符的最长子串的长度。
1 | class Solution(object): |
159. Longest Substring with At Most Two Distinct Characters
给定一个字符串,找出最长子串T
的长度,T
最多包含2个不同的字符
1 | class Solution: |
340. Longest Substring with At Most K Distinct Characters
把上一题的2
改成k
就是本题. 同样,代码也只需把2
改成k
.
1 | class Solution: |
713. Subarray Product Less Than K
统计一个array里面有多少个subarray的内部元素(都是正整数)之积小于K. 基本和上面的AtMostK()
一模一样, 加上等号就行.
1 | class Solution(object): |
992. Subarrays with K Different Integers
返回具有k
个不同字符的subarray的数量. 可以用上一题AtMostK()
的模板.
类似AtMostK()
的题目大都可以用双指针, 然后要求exactly K
的话, 就求一个prefix difference.
1 | class Solution(object): |
395. Longest Substring with At Least K Repeating Characters
Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T
appears no less than k
times.
Example:
1 | Input: |
对于AtLeastK
的题其实不能直接双指针,因为情况太多了,一般是某种metric超过限制, 才能收缩left指针, 但是这个题, 每种char出现的次数似乎多多益善.
为了构造双指针的条件, 可以枚举所有可能的candidate substring中的unique的char个数(题目限制全是lower case English letters所以最大是26). 然后题目变成了, 对于含有AtMostK
(这里的大写K
指的是max_unique
)个字符的substring,满足最小频次>=k
的substring的最大长度. 相当于求了26次最大长度然后取最大.
1 | class Solution(object): |