在 Python 中查找更改后的最大二进制字符串的程序
pythonserver side programmingprogramming更新于 2025/12/2 11:56:17
假设我们有一个二进制字符串。我们可以对以下每个操作应用任意次数 −
如果数字包含子字符串"00",我们可以将其替换为"10"。
如果数字包含子字符串"10",我们可以将其替换为"01"。
然后我们必须找到在任意次数的操作后可以得到的最大二进制(基于其数值)字符串。
因此,如果输入为 s = "001100",则输出将为 111011,因为我们可以像 (00)1100 -> 一样传输它们101(10)0 -> 1010(10) -> 10(10)01 -> 100(10)1 -> 1(00)011 -> 111011。
为了解决这个问题,我们将遵循以下步骤 −
- length := s 的大小
- zeros := s 中 0 的数量
- 如果 zeros < 2,然后
- 返回 s
- s := 从 s 左侧删除所有"1"
- leading_ones := length - s 的大小
- leading_ones := leading_ones + zeros - 1
- trailing_ones := length - leading_ones - 1
- answer_left := leading_ones 1 的数量
- answer_right := trailing_ones 1 的数量
- answer_left 连接 0 连接 answer_right 并返回
示例
让我们看看下面的实现以便更好地理解 −
def solve(s):
length = len(s)
zeros = s.count('0')
if zeros < 2:
return s
s = s.lstrip('1')
leading_ones = length - len(s)
leading_ones += zeros - 1
trailing_ones = length - leading_ones - 1
answer_left = '1' * leading_ones
answer_right = '1' * trailing_ones
return ''.join([answer_left, '0', answer_right])
s = "001100"
print(solve(s))
输入
"001100"
输出
111011
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

