题目地址:
https://www.lintcode.com/problem/add-binary/description
给定两个二进制数,求其和。输入和输出都以字符串形式给出。
直接模拟高精度加法即可。代码如下:
public class Solution {
/**
* @param a: a number
* @param b: a number
* @return: the result
*/
public String addBinary(String a, String b) {
// write your code here
StringBuilder sb = new StringBuilder();
int d = 0;
for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0;) {
if (i >= 0) {
d += a.charAt(i) - '0';
i--;
}
if (j >= 0) {
d += b.charAt(j) - '0';
j--;
}
sb.append(d % 2);
d /= 2;
}
if (d == 1) {
sb.append(1);
}
return sb.reverse().toString();
}
}
时空复杂度 O ( n ) O(n) O(n), n n n是两个数的最长长度。