zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    WAP协议研究笔记—彩信的传输
    应用程序重起自身等几则技巧
    谁妨碍了我们快乐
    国庆长假总结
    关于输入法的两个问题
    反刍
    为什么,一个思维方式的问题,一个习惯的问题,已经意识到了这一点,
    电影池子,
    幻想下,
    意识流,
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/8027106.html
Copyright © 2011-2022 走看看