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。
该题考察的主要知识点包括:
- 字符串操作
- 循环遍历
- 进位处理
以下是代码的解释:
- addBinary 方法接受两个字符串参数 a 和 b,表示两个二进制数。
- 创建一个整数变量 carry,用于表示进位。
- 创建一个 StringBuilder 对象 result 用于存储结果。
- 使用两个指针 i 和 j 分别指向字符串 a 和 b 的最低位(个位)。
- 使用一个循环遍历,循环的条件是 i 或 j 仍有未处理的位,或者还有进位。
- 在循环中,首先将当前位的值与进位相加,得到 sum。然后将指针 i 或 j 向前移动,以便处理下一位。
- 使用取余运算得到当前位的值,插入到 result 的最前面。
- 使用整除运算更新进位标志。
- 循环结束后,result 存储的就是两个二进制数相加的结果。
- 将 result 转换为字符串并返回。