1. 程式人生 > >LeetCode 67. Add Binary (二進制相加)

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

-i har 相加 .cn cheng code tostring list 還要

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/

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