最左侧冗余覆盖子串
华为OD机考2025年7月11号切换正式机考题库为2025C卷,现在刷2025C卷真题,通过率将大大提高,刷得越多,通过率越高。专栏所有题目提供详细的思路讲解,多语言(C++、JAVA、Python、GO、JavaScript)源码实现,并提供
在线OJ系统在线刷题服务。
华为OD机试2025C卷真题题库目录|机考题库 + 算法考点详解
题目描述
给定两个字符串s1和s2和正整数K,其中s1长度为n1,s2长度为n2,在s2中选一个子串,满足:
- 该子串长度为n1+k
- 该子串中包含s1中全部字母,
- 该子串每个字母出现次数不小于s1中对应的字母,
我们称s2以长度k冗余覆盖s1,给定s1,s2,k,求最左侧的s2以长度k冗余覆盖s1的子串的首个元素的下标,如果没有返回-1。
输入描述
输入三行,第一行为s1,第二行为s2,第三行为k,s1和s2只包含小写字母
备注
- 0 ≤ len(s1) ≤ 1000000
- 0 ≤ len(s2) ≤ 20000000
- 0 ≤ k ≤ 1000
输出描述
最左侧的s2以长度k冗余覆盖s1的子串首个元素下标,如果没有返回-1
示例1
输入
ab
aabcd
1
输出
0
说明
子串aab和abc符合要求,由于aab在abc的左侧,因此输出aab的下标:0
示例2
输入
abc
dfs
10
输出
-1
说明
s2无法覆盖s1,输出 -1