Python程序:查找更改后最大的二进制字符串
假设我们有一个二进制字符串。我们可以对它应用以下任何操作任意次数:
如果字符串包含子字符串 "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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP