标签:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:二进制加法计算的步骤:
1、将二进制转化成字符串的形式,这样从高位到地位依次每一位都能利用String+String的形式向里添加数
2、将末尾对其
3、相加时,a+b+进位 (也就是说,二进制相加时,是要对每一位进行处理,而每一位只有0和1,carry 只有 0和1,那么相加只有 0,1,2,3的结果)
代码如下:
public static String addBinary(String a, String b) {
if (a.length() < b.length()) {
String tmp;
tmp = a;
a = b;
b = tmp;
} //保证,a的长度大于b的长度
int alength = a.length() - 1;
int blength = b.length() - 1;
int carry = 0;
String res = "";
while (blength >= 0) {
int sum = (a.charAt(alength) - ‘0‘) +(b.charAt(blength) - ‘0‘) + carry;//这里直接用字符转换成int类型
res = String.valueOf(sum % 2) + res;
carry = sum / 2;
alength--;
blength--;
}
while (alength >= 0) {
int sum = (a.charAt(alength)) + carry;
res = String.valueOf(sum % 2) + res;
carry = sum / 2;
alength--;
}
if (carry == 1) {
res = ‘1‘ + res; //字符添加到字符串的形式:从左侧累加
}
return res;
}
}
标签:
原文地址:http://www.cnblogs.com/neversayno/p/5043576.html