题目描述:给你一个字符串 s 和一个整数数组 cost ,其中 cost[i] 是从 s 中删除字符 i 的代价。
返回使字符串任意相邻两个字母不相同的最小删除成本。
请注意,删除一个字符后,删除其他字符的成本不会改变。
解题思路:每次遇到相邻的重复字母,就贪心的删除当前代价更小的那一个,也许后面还有和当前字符重复的字符而且代价更小,但因为只要是重复的字母都会被删除,所以当前这个字符最终也会因为有比他代价更高的相同字符而被删除掉,用这种贪心的做法可以得到最小的删除代价,代码如下:
class Solution:
def minCost(self, s: str, cost: List[int]) -> int:
size = len(s)
res = 0
pre = 0
for i in range(1, size):
if s[i] == s[pre]:
del_index = pre if cost[i] > cost[pre] else i
res += cost[del_index]
pre = i if del_index == pre else pre
else:
pre = i
return res