-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0067.Add Binary.swift
48 lines (43 loc) · 1.5 KB
/
0067.Add Binary.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Solution {
func addBinary(_ a: String, _ b: String) -> String {
let a = Array(a)
let b = Array(b); print("b - \(b.count)")
let maxCount = max(a.count, b.count)
let minCount = min(a.count, b.count)
var result = ""
var transfer = false
for i in 0..<maxCount {
let aItem = i < a.count ? a[a.count - i - 1] : "0"
let bItem = i < b.count ? b[b.count - i - 1] : "0"
var newItem = "0"
if transfer {
if aItem == "1" && bItem == "1" {
newItem = "1"
transfer = true
} else if (aItem == "1" && bItem == "0") || (aItem == "0" && bItem == "1") {
newItem = "0"
transfer = true
} else {
newItem = "1"
transfer = false
}
} else {
if aItem == "1" && bItem == "1" {
newItem = "0"
transfer = true
} else if (aItem == "1" && bItem == "0") || (aItem == "0" && bItem == "1") {
newItem = "1"
transfer = false
} else {
newItem = "0"
transfer = false
}
}
result = newItem + result
}
if transfer {
result = "1" + result
}
return result
}
}