题目

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 ""