1. 程式人生 > >LeetCode之新增二進位制

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