面试150 二进制求和 位运算

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();}
}