-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path67_add_binary_number.rb
More file actions
53 lines (48 loc) · 1.14 KB
/
67_add_binary_number.rb
File metadata and controls
53 lines (48 loc) · 1.14 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
# Leetcode Problem: https://leetcode.com/problems/add-binary/
#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"
#
#
# Constraints:
#
# Each string consists only of '0' or '1' characters.
# 1 <= a.length, b.length <= 10^4
# Each string is either "0" or doesn't contain any leading zero.
# ----------------------------------------------------------------------------------------------------------------------
# @param {String} a
# @param {String} b
# @return {String}
def add_binary(a, b)
output = ''
carry = 0
i = a.length - 1
j = b.length - 1
while i >= 0 || j >= 0
sum = 0
l_a = a[i - a.length] # "0" "1" nil
l_b = b[j - b.length] # "0" "1" nil
sum = sum + l_a.to_i + l_b.to_i + carry
output = (sum % 2).to_s + output
carry = sum / 2
i -= 1
j -= 1
end
output = carry.to_s + output unless carry.zero?
output
end
a = '11'
b = '1'
p add_binary(a, b)
a = '1010'
b = '1011'
p add_binary(a, b)