zoukankan      html  css  js  c++  java
  • Add Binary Leetcode java

    题目

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

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

    题解

    二进制加法都是从最低位(从右加到左)。所以对两个字符串要从最后一位开始加,如果遇见长度不一的情况,就把短的字符串高位补0.

    每轮计算要加上进位,最后跳出循环后要坚持进位是否为1,以便更新结果。

    代码如下(from discussion):

     1 public String addBinary(String a, String b) {
     2     int m = a.length();
     3     int n = b.length();
     4     int carry = 0;
     5     String res = "";
     6     // the final length of the result depends on the bigger length between a and b, 
     7     // (also the value of carry, if carry = 1, add "1" at the head of result, otherwise)
     8     int maxLen = Math.max(m, n);
     9     for (int i = 0; i < maxLen; i++) {
    10         // start from last char of a and b
    11         // notice that left side is int and right side is char
    12         // so we need to  minus the decimal value of '0'
    13         int p=0,q=0;
    14         if(i<m)
    15             p = a.charAt(m-1-i) - '0';
    16         else
    17             p = 0;
    18         
    19         if(i<n)
    20             q = b.charAt(n-1-i)-'0';
    21         else
    22             q = 0;
    23             
    24         int tmp = p + q + carry;
    25         carry = tmp / 2;
    26         res += tmp % 2;
    27     }
    28     return (carry == 0) ? res : "1" + res;
    29     }

  • 相关阅读:
    和Mac有关的所有快捷键整理
    Python学习笔记
    在PHP的AWS SDK 的上传功能中指定Content-Type
    Docker 部署 Yapi
    PHP 队列
    数据库设计之一 数据库范式
    docker centos PHP7.2 安装 bcmath数学扩展
    记联调微信支付,调起微信支付之后显示支付验证失败
    记Windows 2012 FTP配置之后 客户端登陆报错
    记一次 MAC 安装 homebrew 报错解决
  • 原文地址:https://www.cnblogs.com/springfor/p/3889228.html
Copyright © 2011-2022 走看看