Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
Use another string, or a stringbuilder to store the result. Start with the last characters of the two strings, and concatenate the adding result at the beginning of the new string.
public class Solution {
public String addBinary(String a, String b) {
if (a == null && b == null) {
return null;
}
String res = "";
int la = a.length();
int lb = b.length();
int carry = 0;
for (int i = 0; i < Math.max(la, lb); i++) {
int ca = 0;
int cb = 0;
if (la - 1 - i >= 0) {
ca = (int) (a.charAt(la - 1 - i) - '0');
}
if (lb - 1 - i >= 0) {
cb = (int) (b.charAt(lb - 1 - i) - '0');
}
if (ca + cb + carry == 3) {
res = "1" + res;;
carry = 1;
} else if (ca + cb + carry == 2) {
res = "0" + res;
carry = 1;
} else {
res = String.valueOf(ca + cb + carry) + res;
carry = 0;
}
}
if (carry == 1) {
res = "1" + res;
}
return res;
}
}