二进制求和

二级制求和

http://www.nowcoder.com/questionTerminal/c8c9f42c19194aa88781efefef4df44b

简单的二进制进位,用两个指针分别指向两个字符串,从后向前遍历:

  1. 如果有进位,保存进位,然后将剩余部分加入新字符串
  2. 遍历完某个字符串后,如果存在进位或另一个字符串没有遍历完,继续处理剩余部分
  3. 遍历完毕后将字符串进行反转即可

代码如下:

//
// Created by jt on 2020/9/26.
//
#include <string>
using namespace std;

class Solution {
public:
    /**
     *
     * @param a string字符串
     * @param b string字符串
     * @return string字符串
     */
    string addBinary(string a, string b) {
        // write code here
        string c;
        int p = a.size() - 1, q = b.size() - 1, carry = 0;
        while (p >= 0 && q >= 0) {
            int d =  a[p] - '0' + b[q] - '0' + carry;
            if (d > 1) { carry = 1; c.push_back(d - 2 + '0'); }
            else { carry = 0; c.push_back(d+'0'); }
            --p; --q;
        }
        while (p >= 0) {
            int d = a[p] - '0' + carry;
            if (d > 1) { carry = 1; c.push_back(d - 2 + '0'); }
            else { carry = 0; c.push_back(d+'0'); }
            --p;
        }
        while (q >= 0) {
            int d = b[q] - '0' + carry;
            if (d > 1) { carry = 1; c.push_back(d - 2 + '0'); }
            else { carry = 0; c.push_back(d+'0'); }
            --q;
        }
        if (carry == 1) c.push_back('1');
        reverse(c.begin(), c.end());
        return c;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务