LeetCode 题解工作台

变为活跃状态的最小时间

给你一个长度为 n 的字符串 s 和一个整数数组 order ,其中 order 是范围 [0, n - 1] 内数字的一个 排列 。 从时间 t = 0 开始,在每个时间点,将字符串 s 中下标为 order[t] 的字符替换为 '*' 。 如果 子字符串 包含 至少 一个 '*' ,则认为该子字…

category

0

题型

code_blocks

0

代码语言

hub

0

相关题

当前训练重点

中等 · Minimum Time to Activate String core interview pattern

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 Minimum Time to Activate String core interview pattern 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

给你一个长度为 n 的字符串 s 和一个整数数组 order,其中 order 是范围 [0, n - 1] 内数字的一个 排列

从时间 t = 0 开始,在每个时间点,将字符串 s 中下标为 order[t] 的字符替换为 '*'

如果 子字符串 包含 至少 一个 '*' ,则认为该子字符串有效。

如果字符串中 有效子字符串 的总数大于或等于 k,则称该字符串为 活跃 字符串。

返回字符串 s 变为 活跃 状态的最小时间 t。如果无法变为活跃状态,返回 -1。

 

示例 1:

输入: s = "abc", order = [1,0,2], k = 2

输出: 0

解释:

t order[t] 修改后的 s 有效子字符串 计数 激活状态
(计数 >= k)
0 1 "a*c" "*", "a*", "*c", "a*c" 4

字符串 st = 0 时变为激活状态。因此,答案是 0。

示例 2:

输入: s = "cat", order = [0,2,1], k = 6

输出: 2

解释:

t order[t] 修改后的 s 有效子字符串 计数 激活状态
(计数 >= k)
0 0 "*at" "*", "*a", "*at" 3
1 2 "*a*" "*", "*a", "*a*", "a*", "*" 5
2 1 "***" 所有子字符串(包含 '*') 6

字符串 st = 2 时变为激活状态。因此,答案是 2。

示例 3:

输入: s = "xy", order = [0,1], k = 4

输出: -1

解释:

即使完成所有替换,也无法得到 k = 4 个有效子字符串。因此,答案是 -1。

 

提示:

  • 1 <= n == s.length <= 105
  • order.length == n
  • 0 <= order[i] <= n - 1
  • s 由小写英文字母组成。
  • order 是从 0 到 n - 1 的整数排列。
  • 1 <= k <= 109
lightbulb

解题思路

方法一

1
2

speed

复杂度分析

指标
时间Depends on the final approach
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    The candidate demonstrates understanding of binary search and efficient substring counting.

  • question_mark

    Look for an explanation of how to manage the time complexity when dealing with large values of `n` and `k`.

  • question_mark

    Candidates who struggle with edge cases like `k` being too large or impossible to reach may need further guidance.

warning

常见陷阱

外企场景
  • error

    Overlooking the fact that not all `t` values will result in valid substrings; carefully managing how many valid substrings are generated is crucial.

  • error

    Focusing on brute-force approaches without considering binary search may lead to inefficient solutions for larger inputs.

  • error

    Not considering cases where it's impossible to reach `k` valid substrings, leading to a failure in returning `-1`.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Changing the order array to a randomized sequence might add difficulty by altering the index replacement order.

  • arrow_right_alt

    Increasing `k` beyond feasible limits could require optimizations for large values.

  • arrow_right_alt

    Extending the problem to handle non-alphabetic characters or mixed-case strings could introduce new complexities.

help

常见问题

外企场景

变为活跃状态的最小时间题解:Minimum Time to Activat… | LeetCode #3639 中等