有一个二进制字符串,可以选择该串中的任意一段区间进行取反(可以进行一次或不进行),取反指将
变为
,将
变为
。那么取反之后的
可能的最大的字典序是多少呢。如有
,将区间
取反变为
是字典序最大的。
class Solution: def maxLexicographical(self , num ): # write code here res = '' for i in range(len(num)): if num[i] == '0': while i < len(num): if num[i] == '1': res += num[i:] return res res += '1' i += 1 if i == len(num): return res else: res += num[i] return res
class Solution: def maxLexicographical(self , num ): # write code here l, r = -1, len(num)-1 for i in range(len(num)): if num[i] == '0' and l==-1: l = i if num[i] == '1' and l != -1: r = i-1 break if l==-1: return num res = num[:l] + '1'*len(num[l:r+1]) + num[r+1:] return res