我是靠谱客的博主 真实荷花,最近开发中收集的这篇文章主要介绍67. 二进制求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"
class Solution {
public:
    string addBinary(string a, string b) {
        int i=a.length()-1,j=b.length()-1;
        if(i<j)                        //让2个字符串等长(即短的字符串高位补0)
        {
            for(int p=j-i;p>0;p--)
                a='0'+a;
            i=j;
        }
        else
        {
            for(int p=i-j;p>0;p--)
                b='0'+b;
        }
        string s;
        int flag=0;
        while(i>=0)                    //从最后一位开始判断,设置一个标志进位flag
        {                              //依据a[i]、b[i]和flag进行对应操作
            if(a[i]=='1'&& b[i]=='1')
            {
                if(flag==1)
                    s='1'+s;
                else
                {
                    s='0'+s;
                    flag=1;
                }
            }
            else
            {
                if((a[i] == '1' && b[i] == '0') || (a[i]=='0'&& b[i]=='1'))
                {
                    if(flag==1)
                        s='0'+s;
                    else
                        s='1'+s;
                }
                else             //if(a[i]=='0' &&b[j]=='0')
                {
                    if(flag==1)
                    {
                        s='1'+s;
                        flag=0;
                    }
                    else
                        s='0'+s;
                }
            }
            i--;
        }
        if(flag==1)        //循环结束后仍需要判断下是否有进位
            s='1'+s;
        return s;
    }
};

 

最后

以上就是真实荷花为你收集整理的67. 二进制求和的全部内容,希望文章能够帮你解决67. 二进制求和所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部