zoukankan      html  css  js  c++  java
  • 67. 二进制求和(范例解析)

    我的思路:

    1.补充a,b中长度短的位数

    2.模拟进位

    3.最后单独判断最高位是否进位

    范例代码:

    var addBinary = function(a, b) {
      let [i, j] = [a.length - 1, b.length - 1];
      let carry = 0;
      let ans = "";
      //巧妙利用或运算符,当a,b长度不一致的时候能够继续遍历完全。
      //或carry可以在遍历长度结束后判断最高位是否需要进位。
      while (i >= 0 || j >= 0 || carry) {
        let sum = 0;
        //sum是a,b当前位置的整数和,加上if语句是为了判断最高位计算完了后是否还需要进位
        //如需进位则sum=0,最后运算后sum=1
        if (i >= 0) sum += a[i] - "0";
        if (j >= 0) sum += b[j] - "0";
        sum += carry;
        //通过~~运算符来取整,效果是sum<2则不进位,否则进位。
        carry = ~~(sum / 2);
        sum = sum % 2;
        //每次把sum和之前的运算结果连接。
        ans = sum + ans;
        i--;
        j--;
      }
      return ans;
    };
  • 相关阅读:
    Django复习
    AI-CBV写法
    CHENGDU3-Restful API 接口规范、django-rest-framework框架
    人工智能玩具制作
    POJ 3176 Cow Bowling
    HDU 2044 一只小蜜蜂
    HDU 4662 MU Puzzle
    POJ 3262 Protecting the Flowers
    POJ 1862 Stripies
    POJ 1017 Packets
  • 原文地址:https://www.cnblogs.com/remly/p/10382418.html
Copyright © 2011-2022 走看看