1702. 修改后的最大二进制字符串

题目描述

给了一个只包含0和1的字符串
现在有俩操作能选(1)把00换成10;(2)把10换成01
问怎么操作能得到最大的字符串?

f1-找规律+贪心

基本分析

  1. 为啥会有10换成01的操作?1010-1001-1101,把第一个0后面的1都挪到最后面,变成多个1+多个0+多个1的组合。然后把多个1按照(1)处理
  2. 以上逻辑用代码怎么实现?(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

总结

  1. 不惜要写出过程,直接构造结果
posted @ 2023-04-13 15:36  zhangk1988  阅读(30)  评论(0编辑  收藏  举报