给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
答案:
class Solution {
public String addBinary(String a, String b) {
StringBuilder result=new StringBuilder();
int na=a.length()-1;
int nb=b.length()-1;
int carry=0;//进位
while(na>=0||nb>=0){
int sum=carry;
if(na>=0){
sum+=(a.charAt(na)-'0');
na--;
}
if(nb>=0){
sum+=(b.charAt(nb)-'0');
nb--;
}
result.append(sum%2);
carry=sum/2;
}
if(carry!=0){
result.append(1);
}
return result.reverse().toString();//反转字符串
}
}