Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
public class Solution {
public String addBinary(String a, String b) {
String result = null;
char[] arr_a = a.toCharArray();
char[] arr_b = b.toCharArray();
int len_a = a.length();
int len_b = b.length();
int len = len_a>len_b? len_a:len_b;
char[] arr_result = new char[len];
//定义和、进位符号
int c = 0;
int sum = 0;
int i=1;
for( ; i<=len; i++ ){
if( len_a-i>=0 && len_b-i>=0 ){
sum = arr_a[len_a-i]-'0' + arr_b[len_b-i]-'0' + c;
arr_result[len-i] = (char) (sum%2 + '0');
c = sum/2;
}else if( len_a-i>=0 ){
sum = arr_a[len_a-i]-'0' + c;
arr_result[len-i] = (char) (sum%2 + '0');
c = sum/2;
}else{
sum = arr_b[len_b-i]-'0' + c;
arr_result[len-i] = (char) (sum%2 + '0');
c = sum/2;
}
}
result = new String(arr_result);
//如果进位信号非零,将其添加至结果前面
if(c>0){
result = "1"+result;
}
return result;
}
}