通过率 37% · 提交 986 · 通过 368
小慕正在处理两个字符串 s1 和 s2,以及一个正整数 k。其中 s1 的长度为 n1,s2 的长度为 n2。 小慕需要在 s2 中找到一个,如果这个子串满足以下条件,就称 s2 以长度 k 了 s1: - 该子串的长度为 n1 + k - 该子串包含了 s1 中的所有字母 - 该子串中每个字母出现的次数都不少于 s1 中对应字母的出现次数 给定 s1、s2 和 k,小慕想要找到的、使得 s2 以长度 k 冗余覆盖 s1 的子串,并返回该子串第一个元素的下标。如果不存在这样的子串,则返回 -1。 举例: s1 = "ab" s2 = "aabcd" k = 1 此时子串 "aab" 和 "abc" 都满足条件。由于 "aab" 在 "abc" 的左侧,"aab" 的第一个元素下标为 0,因此输出 0。
这类题属于华为 OD 机考真题方向中「100分 / 2024E」方向的高频题型,通常考察对「100分 / 2024E」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
输入三行,第一行为 s1,第二行为 s2,第三行为 k
最左侧的 s2 以长度 k 冗余覆盖 s1 的子串首个元素下标,如果没有返回 -1。
示例 1
输入示例
ab aabcd 1
输出示例
0
子串aab和abc符合要求,由于aab在abc的左侧,因此输出aab的下标:0
示例 2
输入示例
abc dfs 10
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
本题是 经典题型、最小覆盖子串 的 固定滑窗 版本,直接使用 三问三答 即可解决。
在代码层面,本题和 【固定滑窗】2024E-关联字串 非常相似,可以放在一起进行比较。
win_len 从 n1 修改为 n1 + k,表示窗口长度包含长度 k 的冗余。== 修改为 <=,表示 s2 的子串需要 覆盖 s1,而非和 s1 的排列全等。剩下的内容几乎和 【固定滑窗】2025B-关联字串 完全相同。
思路展开
复杂度分析 设 n1、n2 为 s1、s2 的长度,C 为 s1 中不同字符的个数(字符集大小,常数级别)。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
输出示例
-1
s2无法覆盖s1,输出 -1
时间限制 1000 ms · 内存限制 128 MB
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有