我是靠谱客的博主 香蕉红酒,最近开发中收集的这篇文章主要介绍[LeetCode]67 二进制相加,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Add Binary(二进制相加)

【难度:Easy】
Given two binary strings, return their sum (also a binary string).

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

给定两个二进制数的字符串,以字符串形式返回他们的和。
如:
a = “11”
b = “1”
return “100”


解题思路

高精度加法的变型题,采用的方法是从字符串末尾开始相加,由于二进制加法的情况较少,因此可以针对不同的情况来采取措施。


c++代码如下:

class Solution {
public:
    string addBinary(string a, string b) {
        if (a == "")
            return b;
        if (b == "")
            return a;
        int j = b.length()-1;
        int i = a.length()-1;
        char carry = '0';
        string ans = "";
        for (; i >= 0 && j >= 0; i--,j--) {
            if (a[i] == '1' && b[j] == '1') {
                ans = carry + ans;
                carry = '1';
            } else if (a[i] == '0' && b[j] == '0'){
                ans = carry + ans;
                carry = '0';
            } else {
                if (carry == '1') {
                    ans = '0' + ans;
                    carry = '1';
                } else {
                    ans = '1' + ans;
                    carry = '0';
                }
            }

        }
        if (i >= 0) {
            for (i; i >= 0; i--) {
                if (carry == '1' && a[i] == '1') {
                    ans = '0' + ans;
                    carry = '1';
                } else if (carry == '0') {
                    ans = a[i] + ans;
                } else {
                    ans = carry + ans;
                    carry = '0';
                }
            }
        } else if (j >= 0) {
            for (j; j >= 0; j--) {
                if (carry == '1' && b[j] == '1') {
                    ans = '0' + ans;
                    carry = '1';
                } else if (carry == '0') {
                    ans = b[j] + ans;
                } else {
                    ans = carry + ans;
                    carry = '0';
                }
            }
        }
        if (carry == '1')
            ans = '1' + ans;
        return ans;
    }
};

最后

以上就是香蕉红酒为你收集整理的[LeetCode]67 二进制相加的全部内容,希望文章能够帮你解决[LeetCode]67 二进制相加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部