class Solution {
//大致思路是参照十进制的加法来做,先将两个数末尾对其逐个加逐个进位
public String addBinary(String a, String b) {
StringBuffer result = new StringBuffer();
int aLength = a.length() - 1;
int bLength = b.length() - 1;
int step = 0;
//从尾部遍历两个字符串得出运算的结果
while(aLength >= 0 || bLength >= 0){
//取出值
int value1 = aLength >= 0 ? a.charAt(aLength--) - '0' : 0;
int value2 = bLength >= 0 ? b.charAt(bLength--) - '0' : 0;
//做运算
int sum = value1 + value2 + step;
//求出本位的值和是否进位
step = sum >= 2 ? 1 : 0;
sum = sum >= 2 ? sum - 2 : sum;
//添加到结果集中
result.append(sum);
}
//最后还需要进位判断
if(step != 0){
result.append(1);
}
//由于我们是反向存储的所以最后返回结果的时候我们需要反向遍历回去
return result.reverse().toString();
}
}
二进制加法java实现
最新推荐文章于 2024-07-21 22:27:18 发布