[Leetcode] Add Binary 二進制相加

Add Binary

Given two binary strings, return their sum (also a binary string).算法

For example, a = "11" b = "1" Return "100".ui

模擬加法

複雜度

時間 O(N) 空間 O(1)code

思路

模擬加法的運算法則,從最低位加到最高位。記得使用StringBuilder來減小字符串操做的開銷。字符串

代碼

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

後續 Follow Up

若是不是二進制相加,而是十六進制相加呢?只要把算法中的除2和餘2換成16,並添加相應的十六進制字母就好了。string

相關文章
相關標籤/搜索