LeetCode[题解] 2864. 最大二进制奇数

简介: LeetCode[题解] 2864. 最大二进制奇数

题目

给你一个 二进制 字符串 s ,其中至少包含一个 '1'

你必须按某种方式 重新排列 字符串中的位,使得到的二进制数字是可以由该组合生成的 最大二进制奇数

以字符串形式,表示并返回可以由给定组合生成的最大二进制奇数。

注意 返回的结果字符串 可以 含前导零。

 

示例 1:

输入:s = "010"

输出:"001"

解释:因为字符串 s 中仅有一个 '1' ,其必须出现在最后一位上。所以答案是 "001" 。


示例 2:

输入:s = "0101"

输出:"1001"

解释:其中一个 '1' 必须出现在最后一位上。而由剩下的数字可以生产的最大数字是 "100" 。所以答案是 "1001" 。


 

提示:

  • 1 <= s.length <= 100
  • s 仅由 '0''1' 组成
  • s 中至少包含一个 '1'



题解

根据题目意思,我们可以知道实际上就是将一个随机的二进制字符串,通过随意改变0和1的位置使其变为最大的一个奇数二进制字符串。

根据二进制的特性,我们知道如果一个二进制数为 奇数 那么其 最低位一定为1 ,然后又要使其最大由于二进制中只有0和1,我们只要尽量的将1放在高位(j即二进制数的最前面)即可。由此,我们可以写出如下程序:

    public String maximumOddBinaryNumber(String s) {
        int len = s.length();
        int oneNum = 0;
        for (int i = 0; i < len; i++) {
            if (s.charAt(i) == '1') {
                oneNum ++;
            }
        }

        StringBuilder result = new StringBuilder();
        for (int i = 0; i < oneNum - 1; i++) {
            result.append("1");
        }
        for (int i = 0; i < len - oneNum; i++) {
            result.append("0");
        }
        result.append("1");
        return result.toString();
    }
目录
相关文章
|
6月前
LeetCode 1550. 存在连续三个奇数的数组
LeetCode 1550. 存在连续三个奇数的数组
43 0
|
6月前
|
Java 编译器
LeetCode 190. 颠倒二进制位
LeetCode 190. 颠倒二进制位
37 0
【LeetCode-每日一题】-67. 二进制求和
【LeetCode-每日一题】-67. 二进制求和
|
3月前
|
算法 Java
LeetCode第67题二进制求和
这篇文章是关于LeetCode第67题二进制求和的解题思路和代码实现的分享。作者通过分析题目要求和二进制加法的规则,提供了一个Java语言的解决方案,并在最后总结了二进制在算法中的重要性。
LeetCode第67题二进制求和
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Leetcode题目"剑指 Offer 21. 调整数组顺序使奇数位于偶数前面"的两种Python解决方案,一种是使用双端队列调整数组顺序,另一种是使用双指针法将奇数移到数组前半部分,偶数移到后半部分。
27 4
|
5月前
|
存储 SQL 算法
LeetCode题目67:二进制求和
LeetCode题目67:二进制求和
|
5月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
62 2
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
|
6月前
【力扣】67. 二进制求和
【力扣】67. 二进制求和
|
6月前
leetcode:190. 颠倒二进制位
leetcode:190. 颠倒二进制位
31 0