描述
有一个二进制字符串numnum,可以选择该串中的任意一段区间进行取反(可以进行一次或不进行),取反指将00变为11,将11变为00。那么取反之后的numnum可能的最大的字典序是多少呢。如有num=1000num=1000,将区间[num_{2},…,num_{4}][num 2 ,…,num 4]取反变为11111111是字典序最大的。
分析
从左向右找到第一段“0”,反转,这样的字符串字典序最大
import java.util.*;
public class Solution {
public String maxLexicographical (String num) {
StringBuffer sb = new StringBuffer("");
int i = 0;
while(i < num.length() && num.charAt(i) == '1'){
i++;
sb.append('1');
}
while(i < num.length() && num.charAt(i) == '0'){
i++;
sb.append('1');
}
while(i < num.length()){
sb.append(num.charAt(i));
i++;
}
return sb.toString();
}
}