leetcode 58: Add Binary
Add BinaryApr
2 '12
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) { // Start typing your Java solution below // DO NOT write main() function char[] aa = a.toCharArray(); char[] bb = b.toCharArray(); StringBuilder sb = new StringBuilder(); int i=aa.length - 1; int j=bb.length - 1; int carry = 0; int temp = 0; while(i>=0 && j>=0 ) { temp = aa[i] + bb[j] - '0' - '0' + carry; if( temp / 2 > 0) carry = 1; else carry = 0; sb.insert(0, temp%2); --i; --j; } while(i>=0) { temp = aa[i] - '0' + carry; carry = temp/2>0 ? 1 : 0; sb.insert(0, temp%2 ); --i; } while(j>=0) { temp = bb[j] - '0' + carry; carry = temp/2>0 ? 1 : 0; sb.insert(0, temp%2); --j; } if( carry>0) { sb.insert(0,1); } return sb.toString(); } }
2nd try:
public class Solution { public String addBinary(String a, String b) { // Start typing your Java solution below // DO NOT write main() function // inital check. if(a==null || b==null) return null; if(a.length()==0) return b; if(b.length()==0) return a; int asz = a.length(); int bsz = b.length(); StringBuilder sb = new StringBuilder(); int carry = 0; int i=0; for(; i<asz && i<bsz; i++) { char aa = a.charAt(asz-i-1); char bb = b.charAt(bsz-i-1); int x= aa-'0' + bb-'0' + carry; carry = x>>1; sb.insert(0,x&1+'0'); } String c = asz>bsz ? a : b; while(i<c.length()) { char cc = c.charAt(c.length()-i-1); int x = cc-'0' + carry; carry = x>>1; sb.insert(0,x&1+'0'); ++i; //check index increase or decrease in every while loop. always forget. } if(carry==1) sb.insert(0,'1'); return sb.toString(); } }