📅  最后修改于: 2023-12-03 15:39:40.344000             🧑  作者: Mango
给定一个字符串,现在需要找出所需要的最小删除量,以便给定的字符串仅包含一对交替字符(即存在一个字符,它与其相邻两个字符都不同)。删除量是指移除字符串中的字符数。
例如:
输入: "ABAACDAA"
输出: 2
说明: 删除2个字符,剩下的字符串为"ABACAA",其中只有一对交替字符。
我们可以遍历字符串,同时使用一个变量来记录上一个出现的字符。当我们找到当前字符与上一个字符相同的情况时,就可以把它删掉。
具体步骤如下:
初始化计数器count为0,上一个字符last为字符串的第一个字符。
从第二个字符开始遍历字符串。
如果当前字符与上一个字符相同,就将count加1。
如果当前字符与上一个字符不同,就将last设为当前字符。
遍历完整个字符串后,count就是所需的最小删除量。
def minDeletions(s: str) -> int:
count = 0
last = s[0]
for i in range(1, len(s)):
if s[i] == last:
count += 1
else:
last = s[i]
return count
输入: "ABAACDAA"
输出: 2
解释: 删除2个字符,剩下的字符串为"ABACAA",其中只有一对交替字符。
输入: "AAAAAA"
输出: 5
解释: 删除5个字符,剩下的字符串为空。
遍历字符串只需要一次,时间复杂度为$O(n)$。