题目

add-binary


算法

  • 用两个指针分别指向a,b的末尾

  • 每次取出一个字符,转化为数字,无法取出按0处理,

  • 定义进位carry,初始化为0

  • 三者相加,对2取余即是当前位的数字;对2取商,即是当前进位的值

  • 最后判断carry,为1的话,要在结果最前面加1


代码


class Solution{

public:

    string addBinary(string a,string b){

        string res="";

        int m=a.size()-1,n=b.size()-1,carry=0;

        while(m>=0 || n>=0){

            int p=m>=0 ? a[m--]-'0':0;

            int q=n>=0 ? b[n--]-'0':0;

            int sum=p+q+carry;

            res=to_string(sum%2)+res;

            carry=sum/2;

        }

        return carry==1?"1"+res:res;

    }

};

results matching ""

    No results matching ""