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();
}
}
浙公网安备 33010602011771号