最少交换次数python_该程序计算在Python中将所有1组合在一起所需的交换次数

假设我们有一个二进制字符串,并且我们可以交换任意两位。我们必须找到将所有1组合在一起所需的最小交换次数。

因此,如果输入类似于s =“ 0111001”,则输出将为1,因为我们可以执行以下交换:0111001-> 1111000。

范例(Python)

让我们看下面的实现以更好地理解-class Solution(object):

def solve(self, s):

data = list(map(int, list(s)))

one = 0

n = len(data)

summ=[0 for i in range(n)]

summ[0] = data[0]

one += data[0]

for i in range(1,n):

summ[i] += summ[i-1]+data[i]

one += data[i]

ans = one

left = 0

right = one-1

while right 

if left == 0:

temp = summ[right]

else:

temp = summ[right] - summ[left-1]

ans = min(ans,one-temp)

right+=1

left+=1

return ans

ob = Solution()

s = "0111001"

print(ob.solve(s))

输入值"0111001"

输出结果1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值