中等
给你两个长度分别为 n 和 m 的字符串 skill 和 station。
skill[i] 表示工人 i 的技能,station[j] 表示工位 j 所支持的技能。
你必须将每一名工人分配到一个互不相同的工位。令 ji 表示分配给工人 i 的工位下标。有效的分配方案必须满足:
- 对于每个
0 <= i < n,都有station[ji] == skill[i]。 - 按照工人的顺序,分配的工位下标必须严格递增,即
j0 < j1 < ... < jn - 1。
分配方案的间隔是分配给两名相邻工人的工位下标之间的最大差值。换句话说,它等于所有 1 <= i < n 中 ji - ji - 1 的最大值。
如果只有一名工人,则间隔为 0。
返回所有有效分配方案中可能得到的最大间隔。题目保证至少存在一种有效的分配方案。
示例 1:
输入: skill = "aa", station = "aaaa"
输出: 3
解释:
- 必须将两名工人分配到两个不同的
'a'工位。 - 将他们分配到工位
[0, 3],得到的间隔为 3。
示例 2:
输入: skill = "xyz", station = "xyzz"
输出: 2
解释:
- 将工人 0 分配到工位
j = 0,将工人 1 分配到工位j = 1。 - 为了最大化间隔,将工人 2 分配到工位
j = 3。 - 由此得到分配方案
[0, 1, 3],相邻工位下标的差值为[1, 2],因此间隔为 2。
示例 3:
输入: skill = "cbc", station = "cbcdbc"
输出: 4
解释:
- 将工人 0 分配到工位
j = 0,将工人 1 分配到工位j = 1。 - 为了最大化间隔,将工人 2 分配到工位
j = 5。 - 由此得到分配方案
[0, 1, 5],相邻工位下标的差值为[1, 4],因此间隔为 4。
提示:
skill.length == nstation.length == m1 <= n <= m <= 105skill和station仅由小写英文字母组成。- 题目保证所有工人都存在一种有效的分配方案。