Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

	private static String addBinary(String a, String b) {
int x = Integer.valueOf(a, 2);
int y = Integer.valueOf(b, 2);
int z = x + y;
String binaryString = Integer.toBinaryString(z);
return binaryString;
}

	private static String addBinary(String a, String b) {
long x = Long.valueOf(a, 2);
long y = Long.valueOf(b, 2);
long z = x + y;
String binaryString = Long.toBinaryString(z);
return binaryString;
}

但是，如果给定的字符串的长度大于int的最大值、long的最大值就会抛出java.lang.NumberFormatException异常。在给定了字符串的范围的情况下，可以考

如果不确定字符串的范围，最好使用下面的方法进行操作。

private static String addBinary(String a, String b) {
/** i、j分别指向a、b的末尾字符 **/
int i = a.length() - 1;
int j = b.length() - 1;
/** 进位标记 **/
int carry = 0;
/** 将String转为char数组 **/
char[] achar = a.toCharArray();
char[] bchar = b.toCharArray();
/** 结果数组 **/
char[] resultchar = new char[Math.max(achar.length, bchar.length) + 2];
/** 标记结果数组位置 **/
int resultIndex = 0;

while (true) {
if (i < 0 && j < 0 && carry == 0)
break;

int aflag = 0;
int bflag = 0;

if (i >= 0)
aflag = achar[i] - '0';
if (j >= 0)
bflag = bchar[j] - '0';

if (aflag + bflag + carry > 1) {
resultchar[resultIndex] = (char) ('0' + aflag + bflag + carry - 2);
carry = 1;
} else {
resultchar[resultIndex] = (char) ('0' + aflag + bflag + carry);
carry = 0;
}
resultIndex++;
i--;
j--;
}

String result = new String(resultchar, 0, resultIndex);
StringBuffer buffer = new StringBuffer(result);
result = buffer.reverse().toString();

return result;
}

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120