解题思路:
1 这个也是两个表经过操作合成一个表的题目,最大的问题就是两表长度不一致。可以每次都把两个表放进for循环,如果长度短的表没有可以操作的内容,就用条件语句将它跳过。 这样代码相对简洁
2 每次运算的结果有0、1、2和3四种情况。其中,0和2需要在结果前加一个“0”、1和3需要加一个“1”;2和3需要进位,0和1不需要进位。
代码:
class Solution {
public String addBinary(String a, String b) {
String result = "";
char[] charA = a.toCharArray();
char[] charB = b.toCharArray();
int flag = 0;
int i = charA.length - 1;
int j = charB.length - 1;
for (;i >= 0 || j >= 0;){
char ca, cb;
int num;
if (i >=0 && j >=0){
ca = charA[i];
cb = charB[j];
num = ca - '0' + cb -'0' + flag;
if (num % 2 == 0)
result = "0" + result;
else result = "1" + result;
if (num >= 2)
flag = 1;
else flag = 0;
i--;j--;
}
else if (i>=0 && j<0){
ca = charA[i];
num = ca - '0' + flag;
if (num % 2 == 0)
result = "0" + result;
else result = "1" + result;
if (num >= 2)
flag = 1;
else flag = 0;
i--;
}
else if (j>=0 && i<0){
cb = charB[j];
num = cb -'0' + flag;
if (num % 2 == 0)
result = "0" + result;
else result = "1" + result;
if (num >= 2)
flag = 1;
else flag = 0;
j--;
}
}
if (flag == 1)
result = "1" + result;
return result;
}
}