2022-03-22:二进制取反。 有一个二进制字符串,可以选择该串中的任意一段区间进行取反(可以进行一次或不进行),取反指将0变为1,将1变为0。那么取反之后的num可能的最大的字典序是多少呢。如有,num=1000,讲区间[nums2,...num4]取反变为1111是字典序最大的。 输入例子1:"1000"。 输出例子1:"1111"。 腾讯音乐2022校园招聘。

答案2022-03-22:

从左往右看,第一次遇到连续的所有0,全翻转。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
	num := "1000"
	ret := maxLexicographical(num)
	fmt.Println(ret)
}

func maxLexicographical(num string) string {
	arr := []byte(num)
	i := 0
	for i < len(arr) {
		if arr[i] == '0' {
			break
		}
		i++
	}
	for i < len(arr) {
		if arr[i] == '1' {
			break
		}
		arr[i] = '1'
		i++
	}
	return string(arr)
}

执行结果如下:

在这里插入图片描述


左神java代码