LeetCode problem#67
Add Binary
Solved in 1 languageJava
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.
Problem statements belong to LeetCode and are on leetcode.com. We're not affiliated with LeetCode.