JavaInterview JavaInterview
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)

『Java面试+Java学习』
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)
  • 指南
  • 简历

  • Java

  • 面试

  • 算法

  • algorithm
  • leetcode
JavaInterview.cn
2025-08-11
目录

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

文章发布较早,内容可能过时,阅读注意甄别。

# 题目

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

  • 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。
    • 比方说, "00010" -> "10010"
  • 操作 2 :如果二进制串包含子字符串 "10" ,你可以用 "01" 将其替换。
    • 比方说, "00010" -> "00001"

请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 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' 。

# 思路

// 1.字符串首的1不动
// 2.统计0的个数n,添加n-1个1
// 3.添加一个0
// 4.之后顺序补充1

# 解法

// 1.字符串首的1不动
// 2.统计0的个数n,添加n-1个1
// 3.添加一个0
// 4.之后顺序补充1
class Solution {
    public String maximumBinaryString(String binary) {
        StringBuilder sb = new StringBuilder();
        int index = 0;
        for(; index<binary.length(); index++){
            if(binary.charAt(index)=='1') sb.append("1");
            else break;
        }
        int countZero = 0;
        for(; index<binary.length(); index++){
            if(binary.charAt(index)=='0') countZero++;
        }
        for(int i=1; i<countZero; i++){
            sb.append("1");
        }
        if(countZero>0) sb.append("0");
        for(int i=sb.length(); i<binary.length(); i++){
            sb.append("1");
        }
        return sb.toString();
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 总结

  • 分析出几种情况,然后分别对各个情况实现
微信 支付宝
#Java
最近更新
01
1687. 从仓库到码头运输箱子 Java
08-11
02
1686. 石子游戏VI Java
08-11
03
1688. 比赛中的配对次数 Java
08-11
更多文章>
Theme by Vdoing | Copyright © 2019-2025 JavaInterview.cn
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式