2015年6月25日星期四

Add Binary leetcode

Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
从低位开始相加, 每得出一位的结果添加到result里 最后得到的result是低位在前边 所以要reverse一下.
只遍历了一次 时间复杂度是O(max(m,n)) 空间复杂度也是O(max(m,n))
public class Solution {
    public String addBinary(String a, String b) {
        if (a == null || a.length() == 0) {
            return b;
        }
        if (b == null || b.length() == 0) {
            return a;
        }
        int next = 0;
        int digit;
        StringBuilder res = new StringBuilder();
        int i = a.length() - 1;
        int j = b.length() - 1;
        while (i >= 0 && j>=0) {
            digit = a.charAt(i) - '0' + b.charAt(j) - '0' + next;
            next = digit / 2;
            digit = digit % 2;
            res.append(digit);
            i--;
            j--;
        }
        while (i >= 0) {
            digit = a.charAt(i) - '0' + next;
            next = digit / 2;
            digit = digit % 2;
            res.append(digit);
            i--;
        }
        while (j >= 0) {
            digit = b.charAt(j) - '0' + next;
            next = digit / 2;
            digit = digit % 2;
            res.append(digit);
            j--;
        }
        if (next > 0) {
            res.append(next);
        }
        return res.reverse().toString();
    }
}

没有评论:

发表评论