二进制求和

二级制求和

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;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 15:21
牛客482196251号:你是我见过最大的牛客女孩,这个评论是我给你的礼物
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务