Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 79 additions & 1 deletion
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‎

Lines changed: 79 additions & 1 deletion
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
### **...**
Lines changed: 9 additions & 15 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /