2022-03-22:二进制取反。
有一个二进制字符串,可以选择该串中的任意一段区间进行取反(可以进行一次或不进行),取反指将0变为1,将1变为0。那么取反之后的num可能的最大的字典序是多少呢。如有,num=1000,讲区间nums2,...num4取反变为1111是字典序最大的。
输入例子1:"1000"。
输出例子1:"1111"。
腾讯音乐2022校园招聘。
答案2022-03-22:
从左往右看,第一次遇到连续的所有0,全翻转。
代码用golang编写。代码如下:
代码语言:go复制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代码