Add Binary
Total Accepted: 11726 Total Submissions: 45895 My Submissions
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
【解题思路】
二进制加法,转为数组,按位相加,return字符串即可。
Total Accepted: 11726 Total Submissions: 45895 My Submissions
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
【解题思路】
二进制加法,转为数组,按位相加,return字符串即可。
Java AC 444ms
public class Solution {
public String addBinary(String a, String b) {
if (a == null || b == null) {
return "";
}
if ("".equals(a) || "".equals(b)) {
return "";
}
if ("".equals(a.replaceAll("0", ""))
&& "".equals(b.replaceAll("0", ""))) {
return "0";
}
int len1 = a.length();
int len2 = b.length();
char arrayA[] = a.toCharArray();
char arrayB[] = b.toCharArray();
int maxLen = Math.max(len1, len2);
int array[] = new int[maxLen + 1];
int k = maxLen;
while (len1 > 0 && len2 > 0) {
array[k] += arrayA[len1-1] - '0' + arrayB[len2-1] - '0';
if (array[k] >= 2) {
array[k] -= 2;
array[k - 1] += 1;
}
k--;
len1--;
len2--;
}
while (len1 > 0) {
array[k] += arrayA[len1-1] - '0';
if (array[k] >= 2) {
array[k] -= 2;
array[k - 1] += 1;
}
len1--;
k--;
}
while (len2 > 0) {
array[k] += arrayB[len2-1] - '0';
if (array[k] >= 2) {
array[k] -= 2;
array[k - 1] += 1;
}
len2--;
k--;
}
StringBuffer sb = new StringBuffer();
int i = 0;
if (array[0] == 0) {
i = 1;
}
for (; i < maxLen + 1; i++) {
sb.append(array[i]);
}
return sb.toString();
}
}
Python AC 228ms
class Solution:
# @param a, a string
# @param b, a string
# @return a string
def addBinary(self, a, b):
len1 = len(a)
len2 = len(b)
if len1 > len2:
maxLen = len1
else:
maxLen = len2
list = [0 for i in range(maxLen + 1)]
k = maxLen
while len1 > 0 and len2 > 0:
list[k] += int(a[len1-1]) + int(b[len2-1])
if list[k] >= 2:
list[k] -= 2
list[k-1] += 1
len1 -= 1
len2 -= 1
k -= 1
while len1 > 0:
list[k] += int(a[len1-1])
if list[k] >= 2:
list[k] -= 2
list[k-1] += 1
len1 -=1
k -= 1
while len2 > 0:
list[k] += int(b[len2-1])
if list[k] >= 2:
list[k] -= 2
list[k-1] += 1
len2 -= 1
k -= 1
list = [str(e) for e in list]
if list[0] == '0':
return "".join(list[1:])
else:
return "".join(list)