Leetcode-二进制求和

14.二进制求和

题目内容:

Leetcode-二进制求和_第1张图片

代码及思路:

class Solution {
public:
    string addBinary(string a, string b) {
        //分别设置两个指针指向字符串尾部开始,将两个字符串每一位上的字符取出转为数字相加,并设置进位项carry.sum对2取余是得到当前相加后的值,对2求商则是得到进位项
        int first=a.length()-1;
        int second=b.length()-1;
        string res="";
        int carry=0;
        while(first>=0||second>=0)
        {
            int p,q;
            if(first>=0)
            {
                p=a[first--]-'0';
            }
            else
                p=0; //位数不够即为0
            if(second>=0)
                q=b[second--]-'0';
            else
                q=0;
            int sum=p+q+carry;
            res=to_string(sum%2)+res;
            carry=sum/2;
        }
        if(carry==1)
            return "1"+res;
        else
            return res;
        
    }
};

 

你可能感兴趣的:(Leetcode编程题)