美文网首页
[刷题防痴呆] 0067 - 二进制求和 (Add Binary

[刷题防痴呆] 0067 - 二进制求和 (Add Binary

作者: 西出玉门东望长安 | 来源:发表于2021-10-22 00:49 被阅读0次

题目地址

https://leetcode.com/problems/add-binary/description/

题目描述

67. Add Binary

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"
Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

思路

  • 从后往前一个接着一个计算.
  • 要判断进位.

关键点

  • 最后的string需要reverse.

代码

  • 语言支持:Java
class Solution {
    public String addBinary(String a, String b) {
        StringBuffer sb = new StringBuffer();
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry = 0;
        while (i >= 0 || j >= 0) {
            int sum = 0;
            if (i >= 0) {
                sum += a.charAt(i) - '0';
                i--;
            }
            if (j >= 0) {
                sum += b.charAt(j) - '0';
                j--;
            }
            sum += carry;
            sb.append(sum % 2);
            carry = sum / 2;
        }
        if (carry > 0) {
            sb.append(carry);
        }
        return sb.reverse().toString();
    }
}

相关文章

网友评论

      本文标题:[刷题防痴呆] 0067 - 二进制求和 (Add Binary

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