📅  最后修改于: 2023-12-03 15:11:55.616000             🧑  作者: Mango
给定一个二进制字符串,您需要删除最小数量的字符,以使其成为一个交替的字符串,即0和1交替出现。一个字符串可以是交替的,如果没有连续的重复字符。
此题需要找到二进制字符串中连续相同子串的出现次数并统计,最后将其删除,剩余字符数即为所需删除的最小字符数。
具体步骤如下:
count
并初始化为0,表示连续相同子串的出现次数。count
自增1。count
为1。count
的值大于1,则表示当前位置为连续相同子串的结束位置,将当前子串的长度减1,即删除最后一个字符,并将 count
重置为1。def minDeletions(s: str) -> int:
count, res = 1, 0
n = len(s)
for i in range(1, n):
if s[i] == s[i-1]:
count += 1
else:
if count > 1:
res += count - 1
count = 1
if count > 1:
res += count - 1
return res
输入:"1010101"
输出:0
输入:"1011110"
输出:1
输入:"111000"
输出:2