字符串简单 NC172 二进制取反

NC172 二进制取反

描述

有一个二进制字符串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();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43260719/article/details/121478684
今日推荐