Skip to content

Commit 6bb34c8

Browse files
committed
leetcode
1 parent 3f6faa4 commit 6bb34c8

File tree

2 files changed

+78
-2
lines changed

2 files changed

+78
-2
lines changed

AddBinary/add_binary.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ class E {
161161
// }
162162

163163
String reverseStr(String str) {
164-
int n = str.length;
164+
final int n = str.length;
165165
// for (int i = 0; i < n / 2; i++) swap(str[i], str[n - i - 1]);
166-
var sb = StringBuffer();
166+
final StringBuffer sb = StringBuffer();
167167
for (int i = 0; i < n / 2; i++) {
168168
sb.writeCharCode(str.codeUnitAt(i));
169169
//sb.write(str[i], str[n - i - 1]);

AddBinary/add_binary.go

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package main
2+
3+
import "strings"
4+
5+
func addBinary(a string, b string) string {
6+
memory := false
7+
if len(b) < len(a) {
8+
a, b = b, a
9+
}
10+
m := len(a)
11+
n := len(b)
12+
13+
answer := []string{}
14+
15+
for i := m - 1; i >= 0; i-- {
16+
x := string(a[i])
17+
y := string(b[(n-m)+i])
18+
19+
if x == "1" && y == "1" {
20+
if memory {
21+
answer = append(answer, "1")
22+
} else {
23+
answer = append(answer, "0")
24+
memory = true
25+
}
26+
} else if x == "1" || y == "1" {
27+
if memory {
28+
answer = append(answer, "0")
29+
} else {
30+
answer = append(answer, "1")
31+
}
32+
} else {
33+
if memory {
34+
answer = append(answer, "1")
35+
memory = false
36+
} else {
37+
answer = append(answer, "0")
38+
}
39+
}
40+
}
41+
42+
for i := n - m - 1; i >= 0; i-- {
43+
x := string(b[i])
44+
if x == "1" {
45+
if memory {
46+
answer = append(answer, "0")
47+
} else {
48+
answer = append(answer, "1")
49+
}
50+
} else if x == "0" {
51+
if memory {
52+
answer = append(answer, "1")
53+
memory = false
54+
} else {
55+
answer = append(answer, "0")
56+
}
57+
}
58+
}
59+
60+
if memory {
61+
answer = append(answer, "1")
62+
}
63+
64+
return strings.Join(reverse(answer), "")
65+
}
66+
67+
func reverse(array []string) []string {
68+
left := 0
69+
right := len(array) - 1
70+
for left < right {
71+
array[left], array[right] = array[right], array[left]
72+
left++
73+
right--
74+
}
75+
return array
76+
}

0 commit comments

Comments
 (0)