2024.4.10每日一题

LeetCode

修改后的最大二进制字符串

题目链接:1702. 修改后的最大二进制字符串 - 力扣(LeetCode)

题目描述

给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改:

  • 操作 1 :如果二进制串包含子字符串

    "00"
    

    ,你可以用

    "10"
    

    将其替换。

    • 比方说, "**00**010" -> "**10**010"
  • 操作 2 :如果二进制串包含子字符串

    "10"
    

    ,你可以用

    "01"
    

    将其替换。

    • 比方说, "000**10**" -> "000**01**"

请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字,那么我们称二进制字符串 x 大于二进制字符串 y

示例 1:

输入:binary = "000110"
输出:"111011"
解释:一个可行的转换为:
"000110" -> "000101" 
"000101" -> "100101" 
"100101" -> "110101" 
"110101" -> "110011" 
"110011" -> "111011"

示例 2:

输入:binary = "01"
输出:"01"
解释:"01" 没办法进行任何转换。

提示:

  • 1 <= binary.length <= 105
  • binary 仅包含 '0''1'

思路

https://leetcode.cn/problems/maximum-binary-string-after-change/solutions/2732155/tan-xin-jian-ji-xie-fa-pythonjavacgojsru-szie/?envType=daily-question&envId=2024-04-10

代码

C++
class Solution {
public:
    string maximumBinaryString(string binary) {
        int i = binary.find('0');
        if(i < 0){
            return binary;
        }
        int cnt1 = count(binary.begin() + i, binary.end(),'1');
        return string(binary.size() - 1 - cnt1, '1') + '0' + string(cnt1, '1');
    }
};
Java
class Solution {
    public String maximumBinaryString(String binary) {
        int i = binary.indexOf('0');
        if(i < 0){
            return binary;
        }
        char[] s = binary.toCharArray();
        int cnt1 = 0;
        for(i++; i < s.length; i++){
            cnt1 += s[i] - '0';
        }
        return "1".repeat(s.length - 1 - cnt1) + "0" + "1".repeat(cnt1);
    }
}
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值