ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

算法第十七天-构造有效字符串的最少插入数

2026/9/12 13:05:24 拓冰建站 浏览量
算法第十七天-构造有效字符串的最少插入数

构造有效字符串的最少插入数

题目要求

解题思路

考虑abc的个数

假设答案有n个"abc"组成,那么需要插入的字符个数为 3 ∗ n − l e n ( s ) 3*n - len(s) 3nlen(s)

对于相邻的两个字符x和y(x在y左侧):

  • 如果 x < y x<y x<y,那么x和y可以在同一个"abc"内,否则一定不在;
  • 如果 x ≥ y x\ge y xy,那么x和y一定不可以在同一个"abc"内,

所以, n n n就是 x ≥ y x\ge y xy 的次数加1

代码


class Solution:def addMinimum(self, s: str) -> int:ans = ord(s[0]) - ord(s[-1]) + 2for x, y in pairwise(map(ord, s)):ans += (y - x + 2) % 3return ans

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n为word的长度
  • 空间复杂度: O ( 1 ) O(1) O(1)