题目:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
分析:
简单
代码:
public String addBinary(String a, String b) {
if (a.length() < b.length()) {
String temp = a;
a = b;
b = temp;
}
int lb = b.length();
int la = a.length();
char[] ca = a.toCharArray();
char[] cb = b.toCharArray();
for (int i = 0; i < lb; i++) {
ca[la - 1 - i] += (cb[lb - 1 - i] - '0');
}
for (int i = 0; i < la; i++) {
if (i == la - 1) {
if (ca[0] == '2') {
ca[0] = '0';
return "1" + String.valueOf(ca);
}
if (ca[0] == '3') {
ca[0] = '1';
return "1" + String.valueOf(ca);
}
}
if (ca[la - 1 - i] == '2') {
ca[la - 2 - i] += 1;
ca[la - 1 - i] = '0';
} else if (ca[la - 1 - i] == '3') {
ca[la - 2 - i] += 1;
ca[la - 1 - i] = '1';
} else if (i > lb) {
break;
}
}
return String.valueOf(ca);
}
效率:
总结:
简单