LeetCode 67. Add Binary
考点 | 难度 |
---|---|
String | Easy |
题目
Given two binary strings a
and b
, return their sum as a binary string.
思路
和手动算二进制加减的步骤类似,从最后一位向前算,如果两个数字的和是2向前一位进1,这一位填0。如果两个数字的和是0或1,不需要进位。在建string的时候需要用到StringBuilder
,因为StringBuilder
的string可以被更改。
答案
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();
}