Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
本来这道题,我想直接用long的parseInt方法,然后发现字符串太长了超出了Long的范围,之后看了大家的答题经验之后,发现应该一位一位地处理,模仿数学进位的过程,
才是这道题的正确解答姿势,下面是代码。
class Solution {
public String addBinary(String a, String b) {//这里面如果用自带的int,或者long 的parseInt方法来做的话,总会超出限制。重点是一位一位地往上加
int i = a.length()-1,j = b.length() -1,carry = 0;
StringBuilder s = new StringBuilder();
int sum = 0;
while(i >= 0 || j >= 0){
sum = carry;
if(i >= 0){
sum += a.charAt(i--) - '0';
}
if(j >= 0){
sum += b.charAt(j--) - '0';
}
s.append(sum %2);
carry = sum /2;
}
if(carry != 0){
s.append(carry);
}
return s.reverse().toString();
}
}