题目
思路:很简单,从后向前遍历,如果位数少的补零,加和,使用 StringBulider进行添加字符,最后判断是否需要进位,如果需要就加‘1’.最后反向输出即可。
public static String addBinary(String a, String b) {
if(a.length() ==0) return b;
if(b.length() ==0) return a;
StringBuilder sb = new StringBuilder();
int i = a.length()-1;
int j = b.length()-1;
int carry = 0;
while( i >=0 || j>=0){
int sum = carry;
sum += i>=0 ? a.charAt(i) - '0' : 0;
sum += j>=0 ? b.charAt(j) -'0' : 0;
carry = sum/2;
sb.append(sum%2);
i--;
j--;
}
sb.append(carry == 1 ? carry : "" );
return sb.reverse().toString();
}
时间复杂度O(n)