-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path2018-08-30-67-Add-Binary.py
More file actions
68 lines (58 loc) · 1.61 KB
/
2018-08-30-67-Add-Binary.py
File metadata and controls
68 lines (58 loc) · 1.61 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
# @Author: 何睿
# @Create Date: 2018-08-30 21:15:13
# @Last Modified by: 何睿
# @Last Modified time: 2018-08-30 21:15:35
"""
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
"""
class Solution:
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
len_a = len(a)
len_b = len(b)
result = []
longest = {}
if len_a < len_b:
num_min = len_a
longest.setdefault('a', b)
left = len_b-len_a
else:
num_min = len_b
longest.setdefault('a', a)
left = len_a-len_b
temp = 0
for index in range(1, num_min+1):
temp = temp+int(a[-index])+int(b[-index])
if temp >= 2:
result.insert(0, temp-2)
temp = 1
else:
result.insert(0, temp)
temp = 0
for index in range(left-1, -1, -1):
temp = temp+int(longest.get('a')[index])
if temp >= 2:
result.insert(0, temp-2)
temp = 1
else:
result.insert(0, temp)
temp = 0
if temp:
result.insert(0, temp)
return ''.join(str(x) for x in result)
if __name__ == "__main__":
so = Solution()
re = so.addBinary("1111", "1111")
print(re)