Skip to content

Commit 7c0184f

Browse files
committed
feat: update solutions to lc problem: No.0067. Add Binary
1 parent 9fb84b9 commit 7c0184f

File tree

3 files changed

+167
-17
lines changed

3 files changed

+167
-17
lines changed

solution/0000-0099/0067.Add Binary/README.md

+79-1
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,93 @@
4444
<!-- 这里可写当前语言的特殊实现逻辑 -->
4545

4646
```python
47-
47+
class Solution:
48+
def addBinary(self, a: str, b: str) -> str:
49+
return bin(int(a, 2) + int(b, 2))[2:]
4850
```
4951

5052
### **Java**
5153

5254
<!-- 这里可写当前语言的特殊实现逻辑 -->
5355

5456
```java
57+
class Solution {
58+
public String addBinary(String a, String b) {
59+
StringBuilder sb = new StringBuilder();
60+
int i = a.length() - 1, j = b.length() - 1, carry = 0;
61+
while (i >= 0 || j >= 0 || carry != 0) {
62+
int s = carry + (i >= 0 ? a.charAt(i) - '0' : 0) + (j >= 0 ? b.charAt(j) - '0' : 0);
63+
sb.append(s % 2);
64+
carry = s / 2;
65+
--i;
66+
--j;
67+
}
68+
return sb.reverse().toString();
69+
}
70+
}
71+
```
72+
73+
### **C#**
74+
75+
```cs
76+
using System;
77+
using System.Collections.Generic;
78+
79+
public class Solution {
80+
public string AddBinary(string a, string b) {
81+
var list = new List<char>(Math.Max(a.Length, b.Length) + 1);
82+
var i = a.Length - 1;
83+
var j = b.Length - 1;
84+
var carry = 0;
85+
while (i >= 0 || j >= 0)
86+
{
87+
if (i >= 0)
88+
{
89+
carry += a[i] - '0';
90+
}
91+
if (j >= 0)
92+
{
93+
carry += b[j] - '0';
94+
}
95+
list.Add((char)((carry % 2) + '0'));
96+
carry /= 2;
97+
--i;
98+
--j;
99+
}
100+
if (carry > 0) list.Add((char) (carry + '0'));
101+
list.Reverse();
102+
return new string(list.ToArray());
103+
}
104+
}
105+
```
55106

107+
### **Go**
108+
109+
```go
110+
func addBinary(a string, b string) string {
111+
for len(a) > len(b) {
112+
b = "0" + b
113+
}
114+
for len(a) < len(b) {
115+
a = "0" + a
116+
}
117+
zero := []byte("0")[0]
118+
ret := make([]byte, len(a))
119+
for right := len(a) - 1; right > 0; right-- {
120+
t := ret[right] + a[right] + b[right] - zero*2
121+
ret[right] = t%2 + zero
122+
if t >= 2 {
123+
ret[right-1] = 1
124+
}
125+
}
126+
t := ret[0] + a[0] + b[0] - zero*2
127+
ret[0] = t%2 + zero
128+
if t >= 2 {
129+
ret = append([]byte("1"), ret...)
130+
}
131+
132+
return string(ret)
133+
}
56134
```
57135

58136
### **...**

solution/0000-0099/0067.Add Binary/README_EN.md

+79-1
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,91 @@
3131
### **Python3**
3232

3333
```python
34-
34+
class Solution:
35+
def addBinary(self, a: str, b: str) -> str:
36+
return bin(int(a, 2) + int(b, 2))[2:]
3537
```
3638

3739
### **Java**
3840

3941
```java
42+
class Solution {
43+
public String addBinary(String a, String b) {
44+
StringBuilder sb = new StringBuilder();
45+
int i = a.length() - 1, j = b.length() - 1, carry = 0;
46+
while (i >= 0 || j >= 0 || carry != 0) {
47+
int s = carry + (i >= 0 ? a.charAt(i) - '0' : 0) + (j >= 0 ? b.charAt(j) - '0' : 0);
48+
sb.append(s % 2);
49+
carry = s / 2;
50+
--i;
51+
--j;
52+
}
53+
return sb.reverse().toString();
54+
}
55+
}
56+
```
57+
58+
### **C#**
59+
60+
```cs
61+
using System;
62+
using System.Collections.Generic;
63+
64+
public class Solution {
65+
public string AddBinary(string a, string b) {
66+
var list = new List<char>(Math.Max(a.Length, b.Length) + 1);
67+
var i = a.Length - 1;
68+
var j = b.Length - 1;
69+
var carry = 0;
70+
while (i >= 0 || j >= 0)
71+
{
72+
if (i >= 0)
73+
{
74+
carry += a[i] - '0';
75+
}
76+
if (j >= 0)
77+
{
78+
carry += b[j] - '0';
79+
}
80+
list.Add((char)((carry % 2) + '0'));
81+
carry /= 2;
82+
--i;
83+
--j;
84+
}
85+
if (carry > 0) list.Add((char) (carry + '0'));
86+
list.Reverse();
87+
return new string(list.ToArray());
88+
}
89+
}
90+
```
4091

92+
### **Go**
93+
94+
```go
95+
func addBinary(a string, b string) string {
96+
for len(a) > len(b) {
97+
b = "0" + b
98+
}
99+
for len(a) < len(b) {
100+
a = "0" + a
101+
}
102+
zero := []byte("0")[0]
103+
ret := make([]byte, len(a))
104+
for right := len(a) - 1; right > 0; right-- {
105+
t := ret[right] + a[right] + b[right] - zero*2
106+
ret[right] = t%2 + zero
107+
if t >= 2 {
108+
ret[right-1] = 1
109+
}
110+
}
111+
t := ret[0] + a[0] + b[0] - zero*2
112+
ret[0] = t%2 + zero
113+
if t >= 2 {
114+
ret = append([]byte("1"), ret...)
115+
}
116+
117+
return string(ret)
118+
}
41119
```
42120

43121
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
class Solution {
22
public String addBinary(String a, String b) {
3-
StringBuilder reverseAnswer = new StringBuilder();
4-
int maxLength = Math.max(a.length(), b.length());
5-
int carry = 0;
6-
7-
for (int i = 0;i < maxLength;i++) {
8-
carry += i < a.length() ? a.charAt(a.length() - 1 - i) - 48 : 0;
9-
carry += i < b.length() ? b.charAt(b.length() - 1 - i) - 48 : 0;
10-
11-
reverseAnswer.append(carry % 2);
12-
carry /= 2;
3+
StringBuilder sb = new StringBuilder();
4+
int i = a.length() - 1, j = b.length() - 1, carry = 0;
5+
while (i >= 0 || j >= 0 || carry != 0) {
6+
int s = carry + (i >= 0 ? a.charAt(i) - '0' : 0) + (j >= 0 ? b.charAt(j) - '0' : 0);
7+
sb.append(s % 2);
8+
carry = s / 2;
9+
--i;
10+
--j;
1311
}
14-
15-
if (carry == 1) {
16-
reverseAnswer.append(1);
17-
}
18-
return reverseAnswer.reverse().toString();
12+
return sb.reverse().toString();
1913
}
2014
}

0 commit comments

Comments
 (0)