使用Python和二进制字符串制作灯泡开关程序
假设在一个房间里,有n个灯泡,这些灯泡编号从0到n-1。我们必须将它们从左到右排成一行。最初,所有灯泡都是关闭的(0状态)。我们必须获得由给定目标数组't'表示的配置,其中t[i]为'1'表示第i个灯泡打开,'0'表示关闭。我们还有一个开关来翻转灯泡的状态。翻转操作定义如下:
选择任何灯泡索引i。
翻转从索引i到索引n-1的每个灯泡。
我们必须找到形成目标所需的最小翻转次数。
因此,如果输入类似于t = "0101",则输出将为3,如果我们从第二个灯泡开始,则下一个配置将为"0111",然后从第三个开始,它将为"0100",然后翻转最后一个灯泡使其成为"0101"
为了解决这个问题,我们将遵循以下步骤:
count := 0
x := '0'
对于t中的每个i,执行
如果i与x不同,则
count := count + 1
x := i
返回count
让我们看看下面的实现,以便更好地理解:
示例
def solve(t): count = 0 x = '0' for i in t: if i != x: count += 1 x = i return count t = "0101" print(solve(t))
输入
"0101"
输出
3
广告