Leetcode 67 Add Binary 二进制加

题目描述:

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

For example,
a = "11"
b = "1"

Return "100".

用两个string表示大数,返回他们的和(也用string)

思路:

    1.不用想,这道题用string肯定是有坑的,很有可能输入的string很长,远远超过了long long的范围,将string转换成long long再返回去肯定不行。


    2.仿照加法器,这一位p由三部分构成:A[i],B[i],以及上一位的进位,三个加起来了后,p%2就是这一位的值,p/=2得到下一位的进位。由此往复

代码:

class Solution {
public:
    string reverse(string a)
    {
        string s=a;
        int lo=0,hi=s.size()-1;
        while(lo<hi)
        {
            char temp = s[lo];
            s[lo]=s[hi];
            s[hi]=temp;
            lo++;hi--;
        }
        return s;
    }
    string addBinary(string a, string b) 
    {
        string ans="";
        int p = 0, i = a.size() - 1, j = b.size() - 1;
        while(i >= 0 || j >= 0 || p == 1)
        {
            p += i >= 0 ? a[i --] - '0' : 0;
            p += j >= 0 ? b[j --] - '0' : 0;
            ans += char(p % 2 + '0');
            p /= 2;
        } 
        return reverse(ans);
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值