Problem: 67. 二进制求和
文章目录
- 思路
- 复杂度
- Code
思路
👨🏫 参考
复杂度
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
Code
class Solution {public String addBinary(String a, String b){StringBuilder ans = new StringBuilder();int carry = 0;// 记录进位for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; i--, j--){int sum = carry;// 加上进位sum += i >= 0 ? a.charAt(i) - '0' : 0;// 加上 a 的当前位,没有就补 0sum += j >= 0 ? b.charAt(j) - '0' : 0;// 加上 b 的当前位,没有就补 0ans.append(sum % 2);// 添加到尾部carry = sum / 2;// 向上进位}ans.append(carry == 1 ? carry : "");// 处理最后一个可能的进位
// 翻转后即是结果return ans.reverse().toString();}
}