题目
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
Subscribe to see which companies asked this question.
思路
由于加数a和b为字符串表示,所以首先将两个String变为等长(前段置0位),然后从末位开始按位相加,得出结果;
代码
public class Solution {
public String addBinary(String a, String b) {
if("0".equals(a)) return b;
if("0".equals(b)) return a;
int la = a.length();
int lb = b.length();
//先把两个字符串补0,变为等长
if(la < lb){
int l = lb - la;
String add = "";
for(int i = 0 ; i < l ; ++ i) add += "0";
a = add + a;
}
if(la > lb){
int l = la - lb;
String add = "";
for(int i = 0 ; i < l ; ++ i) add += "0";
b = add + b;
}
String sum = "";
char d = '0';//进位值
//从末位开始,按位相加
for(int i = a.length() - 1 ; i >= 0 ; -- i){
char ca = a.charAt(i);
char cb = b.charAt(i);
if(d == '0' && ca == '0' && cb =='0') { sum = '0' + sum; d = '0';}
else if(d == '0' && ca == '0' && cb =='1') {sum = '1' + sum; d = '0';}
else if(d == '0' && ca == '1' && cb =='0') {sum = '1' + sum; d = '0';}
else if(d == '0' && ca == '1' && cb =='1') {sum = '0' + sum; d = '1';}
else if(d == '1' && ca == '0' && cb =='0') {sum = '1' + sum; d = '0';}
else if(d == '1' && ca == '0' && cb =='1') {sum = '0' + sum; d = '1';}
else if(d == '1' && ca == '1' && cb =='0') {sum = '0' + sum; d = '1';}
else {sum = '1' + sum; d = '1';}
}
if(d == '1') sum = '1' + sum;
return sum;
}
}