LeetCode 67. Add Binary (二进制相加)

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

 


题目标签:Math

  题目给了我们两个string a 和 b,让我们把这两个二进制 相加。

  首先把两个string 的长度得到,然后从右向左 取 两个string 的 digit。

  增设一个 carry = 0;

  每一轮把 digit a + digit b + carry = sum:

    新的 digit = sum % 2;

    新的 carry = sum / 2;

  注意当两个string 都走完时候,还要检查一下carry, 是否需要加上digit。

 

 

Java Solution:

Runtime beats 42.60% 

完成日期:12/11/2017

关键词:Math

关键点:digit = sum % 2; carry = sum / 2

 1 class Solution 
 2 {
 3     public String addBinary(String a, String b) 
 4     {
 5         StringBuilder sb = new StringBuilder();
 6         int aLen = a.length() - 1;
 7         int bLen = b.length() - 1;
 8         int carry = 0;
 9         
10         while(aLen >= 0 || bLen >= 0)
11         {
12             int sum = carry;
13             
14             if(bLen >= 0)
15                 sum += b.charAt(bLen--) - '0';
16             if(aLen >= 0)
17                 sum += a.charAt(aLen--) - '0';
18             
19             sb.insert(0, sum % 2);
20             carry = sum / 2;
21         }
22         
23         // for last carry
24         if(carry != 0)
25             sb.insert(0, carry);
26         
27         return sb.toString();
28     }
29 }

参考资料:https://discuss.leetcode.com/topic/13698/short-ac-solution-in-java-with-explanation

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2017-12-12 11:56  Jimmy_Cheng  阅读(192)  评论(0编辑  收藏  举报