首页 > 试题广场 >

二进制取反

[编程题]二进制取反
  • 热度指数:4493 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

有一个二进制字符串,可以选择该串中的任意一段区间进行取反(可以进行一次或不进行),取反指将变为,将变为。那么取反之后的可能的最大的字典序是多少呢。如有,将区间取反变为是字典序最大的。

示例1

输入

"1000"

输出

"1111"

说明

如题意描述。
示例2

输入

"1001"

输出

"1111"

说明

对区间[num_2,num_3]取反能使得字典序最大。    

备注:
num的长度不超过1000。
class Solution:
    def maxLexicographical(self, num: str) -> str:
        # write code here
        i = 0
        numlist = list(num)
        while i < len(numlist) and numlist[i] == "1":
            i += 1
        while i < len(numlist) and numlist[i] == "0":
            numlist[i] = "1"
            i += 1
        return "".join(numlist)

发表于 2024-09-28 17:34:52 回复(0)