LeetCode之新增二進位制
阿新 • • 發佈:2018-11-07
給定兩個二進位制字串,返回它們的總和(也是二進位制字串)。
輸入字串都是非空的,只包含字元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