使用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

更新于:2021年5月29日

931 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告