Grind75
문제로

풀이

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder result = new StringBuilder();
        int sizeA = a.length() - 1;
        int sizeB = b.length() - 1;
        int carry = 0;

        while(sizeA >= 0 || sizeB >= 0) {
            int digitA = sizeA >= 0 ? a.charAt(sizeA) - '0' : 0;
            int digitB = sizeB >= 0 ? b.charAt(sizeB) - '0' : 0;
            int sum = digitA + digitB + carry;

            result.append(sum % 2);
            carry = sum / 2;

            sizeA--;
            sizeB--;
        }

        if(carry != 0) result.append(carry);

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

image