题目链接:LeetCode 1578. 避免重复字母的最小删除成本
题意:
给你一个字符串 s
和一个整数数组 cost
,其中 cost[i]
是从 s
中删除字符 i
的代价。
返回使字符串任意相邻两个字母不相同的最小删除成本。
请注意,删除一个字符后,删除其他字符的成本不会改变。
解题思路:
就贪心的删除,删掉连续相同数字的最小成本,留下最大的
class Solution {
/**
* @param String $s
* @param Integer[] $cost
* @return Integer
*/
function minCost($s, $cost) {
$n = strlen($s);
$ans = 0;
for($i = 0; $i < $n;) {
$sum = 0;
$max = 0;
$j = $i;
while($j < $n && $s[$i] == $s[$j]) {
$sum += $cost[$j];
$max = max($max, $cost[$j]);
$j++;
}
$i = $j;
$ans += $sum - $max;
}
return $ans;
}
}