p85 二进制字符串求和(leetcode 67)

一:解题思路

Time:O(max(m,n)),Space:O(max(m,n))

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    string addBinary(string a, string b) 
    {
        int i = a.length() - 1, j = b.length() - 1, carry = 0;
        string sb = "";
        while (i >= 0 || j >= 0 || carry != 0)
        {
            int sum = carry;
            if (i >= 0) sum += a[i--] - '0';
            if (j >= 0) sum += b[j--] - '0';
            sb.append(to_string(sum%2));
            carry = sum / 2;
        }

        reverse(sb.begin(),sb.end());

        return sb;
    }
};

Java:

class Solution {
        public String addBinary(String a, String b)
        {
              StringBuilder sb=new StringBuilder();
              int i=a.length()-1,j=b.length()-1,carry=0;
              while(i>=0 || j>=0 || carry!=0)
              {
                  int sum=carry;
                  if(i>=0) sum+=a.charAt(i)-'0';
                  if(j>=0) sum+=b.charAt(j)-'0';
                  sb.append(sum%2);
                  carry=sum/2;
              }

              return sb.reverse().toString();
        }
    }

 

posted @ 2020-04-04 21:20  repinkply  阅读(154)  评论(0)    收藏  举报