B. 最左侧冗余覆盖子串

    传统题 1000ms 256MiB

最左侧冗余覆盖子串

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目解析和算法源码

华为OD机试 - 最左侧冗余覆盖子串(Java & JS & Python & C & C++)_伏城之外的博客-CSDN博客

题目描述

给定两个字符串 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

输入描述

输入三行,第一行为 s1,第二行为 s2,第三行为 k

  • s1 和 s2 只包含小写字母

输出描述

最左侧的 s2 以长度 k 冗余覆盖 s1 的子串首个元素下标,如果没有返回 -1。

备注

  • 0 ≤ len(s1) ≤ 1000000
  • 0 ≤ len(s2) ≤ 20000000
  • 0 ≤ k ≤ 1000

用例1

输入

ab
aabcd
1

输出

0

说明

子串aab和abc符合要求,由于aab在abc的左侧,因此输出aab的下标:0

用例2

输入

abc
dfs
10

输出

-1

说明

s2无法覆盖s1,输出 -1

华为OD模拟机考(E卷)【公开赛】2025/2/13 21:00

未参加
状态
已结束
规则
IOI
题目
3
开始于
2025-2-13 21:00
结束于
2025-2-13 23:30
持续时间
2.5 小时
主持人
参赛人数
7