根据首元素是0还是1确定不同的边界。
首元素是0时,左边界为0,右边界为第一个出现的‘1’的下标再减1.
首元素为1时,继续遍历,左边界为第一个出现的‘0’的下标,当然也可能遍历完也没有出现,这就是全1的情况,已是最大,那么直接返回原数即可。
有0出现确定了左边界,那么继续遍历,第一个出现的‘1’的下标减1就是右边界。当然也可能遍历完也没有再出现1,没关系,右边界为n-1,仍然有效。
char* maxLexicographical(char* num ) {
    int n = strlen(num);
    int  from, to, i = 0;
    if(num[0] == '0'){
        from = 0;
        while(num[i] == '0' && i < n)
            i++;
        to = i-1;
    }
    else if(num[0] = '1'){
        while(num[i] == '1' && i < n)
             i++;   
        from = i;
        if(i == n)
            return num;
        while(num[i] == '0' && i < n)
            i++;
        to = i-1; 
    }
    for(i = from; i <= to; i++)
            num[i] = '1';
    return num;
}