Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
代码
Approach #1 Built-in functions
classSolution {publicStringaddBinary(String a,String b) {returnInteger.toBinaryString(Integer.parseInt(a,2) +Integer.parseInt(b,2)); }}
Approach #2 Bit-by-Bit Computation
Time && Space complexity: O(max(N,M)),
classSolution {publicStringaddBinary(String a,String b) {int n =a.length(), m =b.length();if (n < m) returnaddBinary(b, a);int L =Math.max(n, m);StringBuilder sb =newStringBuilder();int carry =0, j = m -1;for (int i = L -1; i >=0; i--) {if (a.charAt(i) =='1') carry++;if (j >=0&&b.charAt(j--) =='1') carry++;if (carry %2==1) {sb.append('1'); } else {sb.append('0'); } carry /=2; }if (carry ==1) sb.append('1');sb.reverse();returnsb.toString(); }}