Description:
Given two binary strings, return their sum (also a binary string).
Solution:
将十进制的加法变成二进制的加法,做了三四道类似的,大家应该很熟悉了。
import java.util.*;
public class Solution {
public String addBinary(String a, String b) {
String ans = "";
if (a.length() > b.length()) {
String c = a;
a = b;
b = c;
}
int la = a.length();
int lb = b.length();
int pre = 0, cha, chb, ch;
for (int i = 0; i < la; i++) {
cha = a.charAt(la - 1 - i) - '0';
chb = b.charAt(lb - 1 - i) - '0';
ch = cha + chb + pre;
if (ch >= 2) {
pre = 1;
ch -= 2;
} else {
pre = 0;
}
ans = ch + ans;
}
if (la < lb) {
for (int i = la; i < lb; i++) {
if (pre == 0) {
ans = b.substring(0, lb - i) + ans;
break;
}
chb = b.charAt(lb - 1 - i) - '0';
ch = pre + chb;
if (ch >= 2) {
pre = 1;
ch -= 2;
} else {
pre = 0;
}
ans = ch + ans;
}
}
if (pre == 1)
ans = 1 + ans;
int tot = 0;
for (; tot < ans.length() - 1; tot++)
if (ans.charAt(tot) == '0')
continue;
else
break;
ans = ans.substring(tot);
return ans;
}
}