寻找最小删除成本以避免Python中重复字母的程序
假设我们有一个字符串s和另一个称为cost的整数数组,其中cost[i]表示删除s中第i个字符的成本。我们必须找到删除的最小成本,使得没有两个相同的字母彼此相邻。我们必须记住,我们将同时删除所选字符。所以删除一个角色后,删除其他角色的成本不会改变。
因此,如果输入类似于s="pptpp",cost=[2,3,4,5,2],那么输出将为4,因为如果我们删除第一个和最后一个p,成本为2+2=4,则字符串将是“ptp”,这里没有两个相同的字符一个接一个出现
示例
让我们看下面的实现来更好地理解:
def solve(s, cost):
cost_f = 0
i = 1
ind = 0
for i in range(1, len(s)):
cur, c_cost = s[i], cost[i]
prev, p_cost = s[i-1], cost[i-1]
if ind == 1:
prev, p_cost = prev_i, cost_i
if cur == prev:
if c_cost >= p_cost:
cost_f += p_cost
prev_i, cost_i = 0,0
ind = 0
if c_cost < p_cost:
cost_f += c_cost
ind = 1
prev_i, cost_i = prev, p_cost
else:
prev_i, cost_i = 0,0
ind = 0
return cost_f
s = "pptpp"
cost = [2,3,4,5,2]
print(solve(s, cost))输入
"pptpp", [2,3,4,5,2]输出结果
4
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下