题目描述
给了一个只包含0和1的字符串
现在有俩操作能选(1)把00换成10;(2)把10换成01
问怎么操作能得到最大的字符串?
基本分析
- 为啥会有10换成01的操作?1010-1001-1101,把第一个0后面的1都挪到最后面,变成多个1+多个0+多个1的组合。然后把多个1按照(1)处理
- 以上逻辑用代码怎么实现?(1)找到第一个0的位置;(2)统计第一个0后面1的个数;(3)构造结果
代码
| class Solution: |
| def maximumBinaryString(self, binary: str) -> str: |
| if not '0' in binary: |
| return binary |
| |
| n = len(binary) |
| # 找到第一个0的位置 |
| idx = binary.index('0') |
| # 最终结果是 '1' * (长度 - 0后面1的个数 - 1) + '0' + '1' * cnt1 |
| # 统计第一个0后面1的个数 |
| cnt = binary[idx:].count('1') |
| return '1' * (n - cnt - 1) + '0' + '1' * cnt |
总结
- 不惜要写出过程,直接构造结果
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现