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 s=new String();
char c;
int temp=0;
int lena=a.length();
int lenb=b.length();
lena--;
lenb--;
while(lena>=0&&lenb>=0){
c=(char)((a.charAt(lena)-'0')+(b.charAt(lenb)-'0')+temp+'0');
if((c-'0')>=2){
temp=1;
c=(char)(c-2);
}
else{
temp=0;
}
s=c+s;
lena--;
lenb--;
}
while(lena>=0){
c=(char)(a.charAt(lena)+temp);
if(c=='2'){
temp=1;
c='0';
}
else{
temp=0;
}
s=c+s;
lena--;
}
while(lenb>=0){
c=(char)(b.charAt(lenb)+temp);
if(c=='2'){
temp=1;
c='0';
}
else{
temp=0;
}
s=c+s;
lenb--;
}
if(temp==1)
s='1'+s;
return s;
}
}
Shorted code in Discuss:
public class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int i = a.length() - 1, j = b.length() -1, carry = 0;
while (i >= 0 || j >= 0) {
int sum = carry;
if (j >= 0) sum += b.charAt(j--) - '0';
if (i >= 0) sum += a.charAt(i--) - '0';
sb.append(sum % 2);
carry = sum / 2;
}
if (carry != 0) sb.append(carry);
return sb.reverse().toString();
}
}