本文共 1695 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要将两个二进制字符串相加,并返回它们的和的二进制表示。二进制加法类似于十进制加法,但需要处理进位。
public class Solution { public String addBinary(String a, String b) { int i = a.length() - 1; int j = b.length() - 1; int carry = 0; StringBuilder sb = new StringBuilder(); // 从右到左处理每一位 while (i >= 0 && j >= 0) { int aDigit = a.charAt(i) - '0'; int bDigit = b.charAt(j) - '0'; int sum = aDigit + bDigit + carry; int current = sum % 2; carry = sum / 2; sb.append(current); i--; j--; } // 处理剩余的a部分 while (i >= 0) { int aDigit = a.charAt(i) - '0'; int sum = aDigit + carry; int current = sum % 2; carry = sum / 2; sb.append(current); i--; } // 处理剩余的b部分 while (j >= 0) { int bDigit = b.charAt(j) - '0'; int sum = bDigit + carry; int current = sum % 2; carry = sum / 2; sb.append(current); j--; } // 处理最终的进位 if (carry > 0) { sb.append(carry); } // 反转得到正确的顺序 return sb.reverse().toString(); }} i 和 j 分别指向两个字符串的末尾,carry 初始化为0。这种方法确保了我们高效地处理二进制字符串相加,并正确处理所有情况,包括进位和不同长度的字符串。
转载地址:http://obgfk.baihongyu.com/