leetcode_67 Add Binary

Given two binary strings, return their sum (also a binary string).
For example,a = "11",b = "1",Return "100".app

這道題就是求兩個表示爲字符串形式的二進制數字的和。ui

最初個人想法是直接對兩個字符串相對應的位進行直接運算,再用一個變量來表示進位,這裏我選擇將較短的字符串前面用0補位,以得到兩個相同長度的字符串進行逐位運算。code

但其實不須要補位字符串

下面貼出來的代碼用了三元表達式進行判斷,若是相應長度有數字就取出數字,若是沒有數字則賦值爲0 get

隨後對ab字符串的相同位置,以及進位的值進行異或運算string

public class Solution {
    public String addBinary(String a, String b) {
        if(a == null || a.isEmpty()) {
            return b;
        }
        if(b == null || b.isEmpty()) {
            return a;
        }
        char[] aArray = a.toCharArray();
        char[] bArray = b.toCharArray();
        StringBuilder stb = new StringBuilder();

        int i = aArray.length - 1;
        int j = bArray.length - 1;
        int aByte;
        int bByte;
        int carry = 0;
        int result;

        while(i > -1 || j > -1 || carry == 1) {
            aByte = (i > -1) ? Character.getNumericValue(aArray[i--]) : 0;
            bByte = (j > -1) ? Character.getNumericValue(bArray[j--]) : 0;
            result = aByte ^ bByte ^ carry;
            carry = ((aByte + bByte + carry) >= 2) ? 1 : 0;
            stb.append(result);
        }
        return stb.reverse().toString();
    }
}
相關文章
相關標籤/搜索