Loading

LeetCode problem#67

Add Binary

Solved in 1 languageJava

Solve it on LeetCode(opens in a new tab)

Solution

109 lines
1class Solution {
2    public String addBinary(String a, String b) {
3        int i = a.length() - 1;
4        int j = b.length() - 1;
5        char carry = '0';
6        StringBuilder sb = new StringBuilder();
7
8        while (i >= 0 || j >= 0)
9        {
10            char digit1 = i >= 0 ? a.charAt(i) : '0';
11            char digit2 = j >= 0 ? b.charAt(j) : '0';
12            char result = '0';
13
14            if ((digit1 == '0' && digit2 == '0' && carry == '0') || (digit1 == '1' && digit2 == '0' && carry == '1'))
15            {
16                result = '0';
17            }
18            else if (digit1 == '0' && digit2 == '0' && carry == '1')
19            {
20                result = '1';
21                carry = '0';
22            }
23            else if ((digit1 == '0' && digit2 == '1' && carry == '0') || (digit1 == '1' && digit2 == '0' && carry == '0') || (digit1 == '1' && digit2 == '1' && carry == '1'))
24            {
25                result = '1';
26            }
27            else if ((digit1 == '0' && digit2 == '1' && carry == '1') || (digit1 == '1' && digit2 == '1' && carry == '0'))
28            {
29                result = '0';
30                carry = '1';
31            }
32
33            sb.insert(0, result);
34            i--;
35            j--;
36        }
37
38        if (carry == '1')
39        {
40            sb.insert(0, carry);
41        }
42
43        return sb.toString();
44    }
45  
46    // public String addBinary(String a, String b) {
47    //     int i = a.length() - 1;
48    //     int j = b.length() - 1;
49    //     char carry = '0';
50    //     StringBuilder sb = new StringBuilder();
51
52    //     while (i >= 0 || j >= 0)
53    //     {
54    //         char digit1 = i >= 0 ? a.charAt(i) : '0';
55    //         char digit2 = j >= 0 ? b.charAt(j) : '0';
56    //         char result = '0';
57
58    //         if (digit1 == '0' && digit2 == '0' && carry == '0')
59    //         {
60    //             result = '0';
61    //             carry = '0';
62    //         }
63    //         else if (digit1 == '0' && digit2 == '0' && carry == '1')
64    //         {
65    //             result = '1';
66    //             carry = '0';
67    //         }
68    //         else if (digit1 == '0' && digit2 == '1' && carry == '0')
69    //         {
70    //             result = '1';
71    //             carry = '0';
72    //         }
73    //         else if (digit1 == '0' && digit2 == '1' && carry == '1')
74    //         {
75    //             result = '0';
76    //             carry = '1';
77    //         }
78    //         else if (digit1 == '1' && digit2 == '0' && carry == '0')
79    //         {
80    //             result = '1';
81    //             carry = '0';
82    //         }
83    //         else if (digit1 == '1' && digit2 == '0' && carry == '1')
84    //         {
85    //             result = '0';
86    //             carry = '1';
87    //         }
88    //         else if (digit1 == '1' && digit2 == '1' && carry == '0')
89    //         {
90    //             result = '0';
91    //             carry = '1';
92    //         }
93    //         else if (digit1 == '1' && digit2 == '1' && carry == '1')
94    //         {
95    //             result = '1';
96    //             carry = '1';
97    //         }
98
99    //         sb.insert(0, result);
100    //     }
101
102    //     if (carry == '1')
103    //     {
104    //         sb.insert(0, carry);
105    //     }
106
107    //     return sb.toString();
108    // }
109}

Want a walkthrough of this Java solution?

Get a step-by-step explanation of the idea behind the code.

All problems

Problem statements belong to LeetCode and are on leetcode.com. We're not affiliated with LeetCode.