Leetcode-67 二进制求和

作者: itbird01 | 来源:发表于2021-10-30 20:17 被阅读0次

67. 二进制求和

解题思路

1.分析题意可知,其实就是实现从末尾遍历,逐位累加
2.两个字符串如果长度相等,则不用处理长度,如果两个字符串长度不等,则将短字符串前面补0
3.从末尾实现,逐位累加
1)0+0=0
2)1+0=0+1=1
3)1+1=10=0+向高一位的进位1
4)1+1+1=11=1+向高一位的进位1

解题遇到的问题

后续需要总结学习的知识点

##解法1
class Solution {
    public String addBinary(String a, String b) {
        // 分析题意可知,其实就是实现从末尾遍历,逐位累加
        // 两个字符串如果长度相等,则不用处理长度,如果两个字符串长度不等,则将短字符串前面补0
        StringBuilder builder = new StringBuilder();
        if (a.length() > b.length()) {
            for (int i = 0; i < a.length() - b.length(); i++) {
                builder.append("0");
            }
            b = builder.toString() + b;
        } else {
            for (int i = 0; i < b.length() - a.length(); i++) {
                builder.append("0");
            }
            a = builder.toString() + a;
        }

        // 从末尾实现,逐位累加
        int add = 0;
        StringBuilder res = new StringBuilder();
        for (int i = a.length() - 1; i >= 0; i--) {
            int ai = a.charAt(i) - '0';
            int bi = b.charAt(i) - '0';
            // 0+0=0
            // 1+0=0+1=1
            // 1+1=10=0+向高一位的进位1
            // 1+1+1=11=1+向高一位的进位1
            if (ai + bi + add == 0 || ai + bi + add == 1) {
                res.append(ai + bi + add);
                add = 0;
            } else if (ai + bi + add == 2) {
                res.append(0);
                add = 1;
            } else if (ai + bi + add == 3) {
                res.append(1);
                add = 1;
            }
        }
        if (add != 0) {
            res.append(add);
        }

        return res.reverse().toString();
    }
}

相关文章

  • Leetcode-67 二进制求和

    67. 二进制求和[https://leetcode-cn.com/problems/add-binary/] 解...

  • 算法相关文章索引(3)

    实战演练 JAVA [Leetcode-49] Group Anagrams 变形词 [LeetCode-67]A...

  • 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。 示例 1:输入: ...

  • 二进制求和

  • 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入...

  • 二进制求和

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-...

  • 二进制求和

    LeetCode第67题 题目描述: 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且...

  • 二进制求和

    题目 难度级别:简单 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 ...

  • 二进制求和

    力扣67题 思路:类似力扣第二题,相加之后模(%)进制数获得当前位数的值,然后用相加之后的数除以进制数,获得进位的...

  • 技术问 - 进制转换

    二进制转化成八进制 二进制转化成十六进制 任意进制转化为十进制 利用十进制转化十进制,推导出按权求和规律 按权求和...

网友评论

    本文标题:Leetcode-67 二进制求和

    本文链接:https://www.haomeiwen.com/subject/ymwialtx.html