原题链接在这里: https://leetcode.com/problems/add-binary/
题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题解:
与Plus One相似。都是维护一个currentDigit(%) 和一个carryDigit(/).
Note:若是算到最后,carryDigit还是1的话就是有一个最后的进位,要在res的首位加起来。
Time Complexity: O(max(a.length(), b.length())), Space O(max(a.length(), b.length())).
AC Java:
1 public class Solution { 2 public String addBinary(String a, String b) { 3 if(a == null){ 4 return b; 5 } 6 if(b == null){ 7 return a; 8 } 9 10 StringBuilder sb = new StringBuilder(); 11 int carry = 0; 12 int i = a.length()-1; 13 int j = b.length()-1; 14 while(i>=0 && j>=0){ 15 int sum = (a.charAt(i)-'0') + (b.charAt(j)-'0') + carry; 16 carry = sum/2; 17 sb.insert(0, sum%2); 18 i--; 19 j--; 20 } 21 while(i>=0){ 22 int sum = (a.charAt(i)-'0') + carry; 23 carry = sum/2; 24 sb.insert(0, sum%2); 25 i--; 26 } 27 while(j>=0){ 28 int sum = (b.charAt(j)-'0') + carry; 29 carry = sum/2; 30 sb.insert(0, sum%2); 31 j--; 32 } 33 34 if(carry != 0){ 35 sb.insert(0, carry); 36 } 37 38 return sb.toString(); 39 } 40 }