题目来源:
leetcode题目,网址:LCR 002. 二进制求和 - 力扣(LeetCode)
解题思路:
模拟二进制加法即可。
解题代码:
class Solution {
public String addBinary(String a, String b) {
StringBuffer sb=new StringBuffer();
int carryBit=0;
for(int i=a.length()-1,j=b.length()-1;i>=0 || j>=0;i--,j--){
int sum=carryBit;
if(i>=0){
sum+=a.charAt(i)-'0';
}
if(j>=0){
sum+=b.charAt(j)-'0';
}
sb.append((char)(sum%2+'0'));
carryBit=sum/2;
}
if(carryBit==1){
sb.append('1');
}
return sb.reverse().toString();
}
}
总结:
官方题解给出了三种解法。第一种是利用 api 将二进制转化为十进制做加法,然后再将结果转化为二进制。第二种是模拟加法,逢二进一。第三种是利用位运算,循环得出无进位加法结果及进位并将其相加直至进位为 0.