📅  最后修改于: 2023-12-03 14:57:21.380000             🧑  作者: Mango
给定一个字符串,求删除最少的字符,使得该字符串中所有出现的字母都连续。
输入:"abbccdee"
输出:1
我们可以遍历字符串中每种字母,将其与相邻的字母进行比较。
如果相邻的字母之间的距离大于1,则将该字母的出现次数与相邻字母出现次数加起来,减去中间隔着的字母出现次数,得到需要删除的最少字母数。
最后统计每种字母需要删除的最少字母数,并返回其中的最小值。
def minDeletion(s: str) -> int:
# 统计每种字母出现的次数
count = {}
for ch in s:
if ch in count:
count[ch] += 1
else:
count[ch] = 1
# 遍历每种字母,计算需要删除的最少字母数
min_del = len(s)
for ch, num in count.items():
left = s.find(ch) # 字母第一次出现的位置
right = s.rfind(ch) # 字母最后一次出现的位置
del_num = num - (right - left + 1) # 需要删除的字母数
if del_num < min_del:
min_del = del_num
return min_del