Given binary strings, return their sum (also a binary string).
For example,
A = "one"
b = "1"
return "+" .
Looks very good to write the appearance, did not expect the ink for a long day.
stringAddstringAstringBintLenaintLenB) { if(lena<LenB)returnAdd (B,a,lenb,lena); //Lena>=lenb intcf=0; intI=0, j=0; intIa=0, ib=0, csum=0; for(i=lena-1, j=lenb-1; j>=0; I--, j--) {ia=a[i]-'0'; IB=b[j]-'0'; if(CF) Csum=ia+ib+CF; ElseCsum=ia+IB; if(csum>=2) {CF=1; Csum=csum-2; } ElseCF=0; A[i]=csum+'0'; } while(cf&&i>=0) {ia=a[i]-'0'; Csum= ia+CF; if(csum>=2) {csum=csum-2; CF=1; } Else{CF=0; } A[i]=csum+'0'; I--; } if(CF) A.insert (A.begin (),'1'); returnA;}stringAddbinary (stringAstringb) { if(a==""&& b=="") return ""; Else if(a=="") returnb; Else if(b=="") returnA; Else { intLena=a.size (), lenb=b.size (); strings=Add (A,B,LENA,LENB); returns; }}
To see what others have to do:
First to align 0, so less than I a little trouble, did not expect ....
Look at the code:
stringAddbinary (stringAstringb) {intSizea =a.size (); intSizeb =b.size (); if(Sizea <Sizeb)returnAddbinary (b, a); //Sizea >= Sizeb stringZeros (Sizea-sizeb,'0'); b= Zeros +b; intcarry =0; for(inti = sizea-1; I >=0; I--) { intsum = (a[i]-'0') + (B[i]-'0') +carry; if(Sum = =0) ; Else if(Sum = =1) {A[i]='1'; Carry=0; } Else if(Sum = =2) {A[i]='0'; Carry=1; } Else {//sum = = 3 (1+1+1)A[i] ='1'; Carry=1; } } if(Carry = =1) A="1"+A; returnA; }
Leetcode "67" Add Binary