zoukankan      html  css  js  c++  java
  • Leetcode67 二进制求和

    题目:Given two binary strings, return their sum (also a binary string).
    For example,
    a = "11"
    b = "1"
    Return "100".

    思路:二进制加法和普通加法的思路没什么差别,甚至更简单。所需要注意的细节就是进位。从最低位开始,进位可能伴随计算直到最高位。所以每一位的加法运算都要将上一次的进位加进去。

    对于某一位a和b,上一为的进位c,该为求和之后的和是(a+b+c)%2,进位是(a+b+c)/2

    class Solution {
    public:
        string addBinary(string a, string b) {
            if(a.size()==0||a=="0") return b;
            if(b.size()==0||b=="0") return a;
            int lena=a.size()-1,lenb=b.size()-1,increase=0;
            string sum="";
            while(lena>=0 && lenb>=0)
            {
                sum=std::to_string((a[lena]-'0' + b[lenb] - '0' + increase)%2) + sum;
                increase=(a[lena]-'0' + b[lenb] - '0' + increase)/2;
                lena--;
                lenb--;
            }
            while(lena>=0)
            {
                sum=std::to_string((increase+a[lena]-'0')%2)+sum;
                increase=(a[lena]-'0'+increase)/2;
                lena--;
            }
            while(lenb>=0)
            {
                sum=std::to_string((increase+b[lenb]-'0')%2)+sum;
                increase=(b[lenb]-'0'+increase)/2;
                lenb--;
            }
           if(increase==1)
                sum="1"+sum;
            return sum;
        }
    };
    

      

  • 相关阅读:
    基本的Dos命令
    OneCloud记录
    Wireguard笔记
    windows网络流量监控
    CoreDNS笔记
    Goland 使用[临时]
    js for循环的同步代码
    看我如何用微信上线CobaltStrike
    图数据库 Nebula Graph 在 Boss 直聘的应用
    熵池 在计算机科学与金融学中的应用
  • 原文地址:https://www.cnblogs.com/renzmin/p/11803543.html
Copyright © 2011-2022 走看看