zoukankan      html  css  js  c++  java
  • [Leetcode] add binary 二进制加法

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

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

    题意:将两个以字符串形式保存的二进制数进行相加。

    思路:其实不管是以数组、字符串形式,加或者乘(multiply strings),一般的思路都是从后往前计算,用一个中间变量保存相加或者相乘的结果(加法是一个变量int 或string就行,乘就要用到向量了)。本题而言,要注意的是,若是相加时其中长度较小的字符串变量完时,怎么办?这时,其实可以用中间变量在字符串各自存在的前提下加上对应值就行。还有一个就是:字符和数字之间的相互转换,可以通过加减'0'来实现。最后一个问题是:最高位存在进位的情况,其实可以最后根据中间变量的值来进行处理。代码如下:

     1 class Solution {
     2 public:
     3     string addBinary(string a, string b) 
     4     {
     5         string res="";
     6         int aLen=a.size()-1;
     7         int bLen=b.size()-1;
     8         int carry=0;
     9         while(aLen>=0||bLen>=0)
    10         {
    11             if(aLen>=0)
    12                 carry+=a[aLen--]-'0';
    13             if(bLen>=0)
    14                 carry+=b[bLen--]-'0';
    15             
    16             res=char(carry%2+'0')+res;  //必须存在char不然,就会报错。恩,不懂。也可以是to_string(carry%2)+res;
    17             carry/=2;
    18         }    
    19         if(carry==1)
    20         {
    21             res='1'+res;
    22         }
    23 
    24         return res;
    25     }
    26 };
  • 相关阅读:
    统计学方法(t-检验)
    generate的使用verilog
    FPGA的存储方式大全
    matlab函数
    三年后的我-记于2018
    labview学习——用户界面模式
    labview线程相关
    labview状态机
    JS~字符串长度判断,超出进行自动截取(支持中文)
    AngulaJs -- 隔离作用域
  • 原文地址:https://www.cnblogs.com/love-yh/p/7086459.html
Copyright © 2011-2022 走看看