要求:给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和。
public class addBinary {
public static void main(String[] args) {
System.out.println(addBinary("111011", "1010"));
}
public static String addBinary(String a, String b) {
// 定义变量 记录所有计算结果
StringBuilder sb = new StringBuilder();
// 定义i和j分别记录两个字符串的高位
int i = a.length() - 1;
int j = b.length() - 1;
// 保存进位
// 循环处理 从右往左进行计算
int c = 0;
while (i >= 0 || j >= 0 || c != 0) {
// 依次获取i和j位置的数字
int ii = (i >= 0) ? a.charAt(i--) - '0' : 0;
int jj = (j >= 0) ? b.charAt(j--) - '0' : 0;
// 记录当前位的和
c = ii + jj + c;
// 记录结果
sb.append(c % 2);
// 是否进位
c /= 2;
}
// sb记录的数为倒叙 需要反转
return sb.reverse().toString();
}
}