思路:
首先进行末位对齐,然后一位一位的相加,如果需要进位,那么创建一个进位变量,
再到下一位,下一位进行相加时,要带上变量
如果最长的一个二进制到了首位相加完,进位还是1的话
那么就再添加一个1出来,
最后进行字符串的翻转
代码:
class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int ca = 0;//进位
for (int i = a.length() - 1, j = b.length() - 1;
i >= 0 || j >= 0; i--, j--) {
int sum = ca;
if (i >= 0) {
sum += a.charAt(i) - '0';
} else {
sum += 0;//不变
}
if (j >= 0) {
sum += b.charAt(j) - '0';
} else {
sum += 0;//不变
}
sb.append(sum % 2);//添加相加结果
ca = sum / 2;//是否进位
}
if (ca == 1) {
sb.append(1);//最后一位进位
}
return sb.reverse().toString();//翻转
}
}
来源:CSDN
作者:yiqqYi
链接:https://blog.csdn.net/yiqqYi/article/details/104167634