给定两个二进制字符串,返回它们的总和(也是二进制字符串)。
输入字符串都是非空的,只包含字符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