Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode Add Binary

Leetcode algorithms 第 67 题:Add Binary。

题目

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

For example,
a = “11″
b = “1″
Return “100″.

解答

两个字符串表示的二进制数相加,直接模拟加法运算,先把短的字符串补齐到两个字符串一样长,然后逐位相加,注意处理进位。

具体代码如下:

class Solution {
public:
    string addBinary(string a, string b) {
        if (a.length() < b.length()) a.swap(b);
        b = string(a.length()-b.length(), '0') + b; //添加前导0使二者一样长
        
        string sum(a.length(), '0');
        int carry = 0;//进位
        for (int i = a.length()-1, t; i >= 0; i--)
            t = (a[i]-'0')+(b[i]-'0')+carry, sum[i] = t%2+'0', carry = t/2;
        if (carry) sum = '1' + sum; //还有进位
        return sum;
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论