def add_binary(a,b):
res=''; carry=0; i,j=len(a)-1,len(b)-1
while i>=0 or j>=0 or carry:
x=int(a[i]) if i>=0 else 0
y=int(b[j]) if j>=0 else 0
carry,rem=divmod(x+y+carry,2)
res=str(rem)+res; i-=1; j-=1
return res
public String addBinary(String a,String b){
StringBuilder res=new StringBuilder();
int i=a.length()-1,j=b.length()-1,carry=0;
while(i>=0||j>=0||carry>0){
int x=i>=0?a.charAt(i--)-'0':0;
int y=j>=0?b.charAt(j--)-'0':0;
int sum=x+y+carry;
res.append(sum%2); carry=sum/2;
} return res.reverse().toString();
}
divmod() gets both. Java c-'0' converts char.
def add_binary(a,b):
res=''; carry=0; i,j=len(a)-1,len(b)-1
while i>=0 or j>=0 or carry:
x=int(a[i]) if i>=0 else 0
y=int(b[j]) if j>=0 else 0
carry,rem=divmod(x+y+carry,2)
res=str(rem)+res; i-=1; j-=1
return res
public String addBinary(String a,String b){
StringBuilder res=new StringBuilder();
int i=a.length()-1,j=b.length()-1,carry=0;
while(i>=0||j>=0||carry>0){
int x=i>=0?a.charAt(i--)-'0':0;
int y=j>=0?b.charAt(j--)-'0':0;
int sum=x+y+carry;
res.append(sum%2); carry=sum/2;
} return res.reverse().toString();
}
1. Process right to left 2. Add with carry