每日一题(leetcode1702):修改后的最大二进制字符串--思维

找到第一个0之后,对于后面的子串(包括那个0),所有的0都能调上来,然后一一转化为10,因此从找到的第一个0的位置开始,接下来是(后半部分子串0的个数-1)个1,然后是一个0,接着剩下的都是1.

class Solution {
public:
    string maximumBinaryString(string binary) {
    int n=binary.size();
    int count=0;
    int index=0;
    for(int i=0;i<n;i++){
        if(binary[i]=='0'){
            index=i;
            break;
        }
    }
    for(int i=index;i<n;i++){
        if(binary[i]=='0'){
            count++;
        }
    }
        for(int j=index;j<n;j++)
        {
            if(count>1)
            {
                binary[j]='1';
            }
            else if(count==1){
                binary[j]='0';
            }
            else if(count<1){
                binary[j]='1';
            }
            count--;

        }
    
        return binary;
    }
};

也可以利用贪心算法,显示具体的操作过程:

class Solution {
public:
    string maximumBinaryString(string binary) {
        int n = binary.size();
        int j = 0;
        for (int i = 0; i < n; i++) {
            if (binary[i] == '0') {
                while (j <= i || (j < n && binary[j] == '1')) {
                    j++;
                }
                if (j < n) {
                    binary[j] = '1';
                    binary[i] = '1';
                    binary[i + 1] = '0';
                }
            }
        }
        return binary;
    }
};

注意代码中的j处于一直递增状态,如果每次从0开始则会超时。

相关推荐

  1. Leetcode-1702-修改二进制字符串-c++

    2024-04-12 01:50:03       41 阅读
  2. LeetCode每日】2864. 二进制奇数

    2024-04-12 01:50:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 01:50:03       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 01:50:03       97 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 01:50:03       78 阅读
  4. Python语言-面向对象

    2024-04-12 01:50:03       88 阅读

热门阅读

  1. 蓝桥杯——分糖果

    2024-04-12 01:50:03       37 阅读
  2. Esilnt使用记录

    2024-04-12 01:50:03       31 阅读
  3. 【IC前端虚拟项目】SDC文件编写与DC综合环境组织

    2024-04-12 01:50:03       37 阅读
  4. 钩子函数和副作用

    2024-04-12 01:50:03       39 阅读
  5. jquery 数字金额转化为大写金额

    2024-04-12 01:50:03       37 阅读
  6. 从企业开发流程到使用场景解析 git vs svn

    2024-04-12 01:50:03       39 阅读
  7. Android app如何禁止运行在模拟器中

    2024-04-12 01:50:03       39 阅读
  8. Python编程学院:揭秘面向对象的魔法

    2024-04-12 01:50:03       37 阅读
  9. 线程池使用

    2024-04-12 01:50:03       35 阅读