检查是否可以使用 Python 将二进制字符串重新排列成交替的 0 和 1


假设我们有一个长度为 2 或以上的二进制字符串 s。我们必须检查是否可以重新排列 s,使得 0 和 1 交替出现。

因此,如果输入类似于 s = "1000111",则输出将为 True,因为我们可以从 s 中形成 "1010101"。

为了解决这个问题,我们将遵循以下步骤:

  • one_count := 二进制字符串 s 中 1 的数量
  • zero_count := 二进制字符串 s 中 0 的数量
  • 如果 s 的大小为偶数,则
    • 当 one_count 等于 zero_count 时返回 true,否则返回 false
  • 当 |one_count - zero_count| 等于 1 时返回 true,否则返回 false

示例

让我们看看下面的实现以获得更好的理解:

 在线演示

def solve(s):
   one_count = s.count('1')
   zero_count = s.count('0')
   if len(s) % 2 == 0 :
      return (one_count == zero_count)
   return abs(one_count - zero_count) == 1
s = "1000111"
print(solve(s))

输入

"1000111"

输出

True

更新于: 2021年1月18日

303 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告