LeetCode之添加二进制

给定两个二进制字符串,返回它们的总和(也是二进制字符串)。

输入字符串都是非空的,只包含字符1或  0

例1:

输入: a =“11”,b =“1”
 输出: “100”

例2:

输入: a =“1010”,b =“1011”
 输出: “10101”

大神代码  清晰明了 不解释

public String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1, j = b.length() -1, carry = 0;
        while (i >= 0 || j >= 0) {
            int sum = carry;
            if (j >= 0) {sum += b.charAt(j--) - '0';}
            if (i >= 0) {sum += a.charAt(i--) - '0';}
            sb.append(sum % 2);
            carry = sum / 2;
        }
        if (carry != 0) {sb.append(carry);}
        return sb.reverse().toString();
    }

注意几点

字符和数字转换 字符-‘0’ 就可以   。

二进制进位 sum/2 就可以

           该位的值sum%2

猜你喜欢

转载自blog.csdn.net/qq_27817327/article/details/83376144