2022-03-22:二进制取反。

2022-03-22 22:14:50 浏览数 (1)

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代码

0 人点赞