📅  最后修改于: 2023-12-03 15:11:55.836000             🧑  作者: Mango
要插入的最小字符数,以使三个连续字符都不相同,可以通过以下方式获取:
示例代码:
def min_insertions(s: str) -> int:
res = 0
n = len(s)
for i in range(2, n):
if s[i] == s[i-1] == s[i-2]:
res += 1
continue
if i > 2 and s[i] == s[i-2] and s[i-1] == s[i-3]:
res += 1
return res
时间复杂度为O(n),空间复杂度为O(1)。
示例代码:
def min_insertions(s: str) -> int:
n = len(s)
dp = [0] * n
for i in range(1, n):
if s[i] != s[i-1]:
dp[i] = dp[i-1]
else:
if i >= 2:
dp[i] = dp[i-2] + 1
else:
dp[i] = 1
return dp[-1]
时间复杂度为O(n),空间复杂度为O(n)。
以上两种方法都能够有效地计算出要插入的最小字符数,以使三个连续字符都不相同。视具体情况选择合适的方法即可。