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) { if(a.length() <0) return b; if(b.length() < 0 ) return a; int carry = 0; String sumStr = ""; int i = a.length() -1; int j = b.length() -1; while(i>=0||j>=0){ int bitSum = 0 ; if(i>=0 && j>=0){ bitSum = Integer.parseInt(a.substring(i,i+1))+Integer.parseInt(b.substring(j,j+1)) + carry ; i--; j--; } else if(i>= 0){ bitSum = Integer.parseInt(a.substring(i,i+1))+ carry; i--; } else{ bitSum = Integer.parseInt(b.substring(j,j+1))+ carry; j--; } carry = bitSum/2; int bit = bitSum %2; sumStr = bit+ sumStr; } if(carry == 1){ sumStr = carry + sumStr; //get new carry one to added before entire string } return sumStr; } }
mistake: substring was suing subString; forgot i-- j--; when 1+1 = 10 the first 1 is new will have one new condition ( carry + existing binary )
learned: from string to binary add use Integer.parseInt for each number to be added