import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a string字符串
     * @param b string字符串
     * @return string字符串
     */
    public String addBinary (String a, String b) {
        // write code here
        int carry = 0; // 进位标志
        StringBuilder result = new StringBuilder();

        int i = a.length() - 1;
        int j = b.length() - 1;

        while (i >= 0 || j >= 0 || carry > 0) {
            int sum = carry;
            if (i >= 0) {
                sum += a.charAt(i) - '0';
                i--;
            }
            if (j >= 0) {
                sum += b.charAt(j) - '0';
                j--;
            }

            result.insert(0, sum % 2);
            carry = sum / 2;
        }

        return result.toString();
    }
}

编程语言是 Java。

该题考察的主要知识点包括:

  • 字符串操作
  • 循环遍历
  • 进位处理

以下是代码的解释:

  1. addBinary 方法接受两个字符串参数 a 和 b,表示两个二进制数。
  2. 创建一个整数变量 carry,用于表示进位。
  3. 创建一个 StringBuilder 对象 result 用于存储结果。
  4. 使用两个指针 i 和 j 分别指向字符串 a 和 b 的最低位(个位)。
  5. 使用一个循环遍历,循环的条件是 i 或 j 仍有未处理的位,或者还有进位。
  6. 在循环中,首先将当前位的值与进位相加,得到 sum。然后将指针 i 或 j 向前移动,以便处理下一位。
  7. 使用取余运算得到当前位的值,插入到 result 的最前面。
  8. 使用整除运算更新进位标志。
  9. 循环结束后,result 存储的就是两个二进制数相加的结果。
  10. 将 result 转换为字符串并返回。