-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathAddingArrayDigit.swift
69 lines (52 loc) · 1.67 KB
/
AddingArrayDigit.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//Adding two array digits
//Sayed Mahmudul Alam
//input a = [1,2,3,4] b = [1,2]
//output c = [1,2,4,6]
struct AddingArrayDigit {
func add(array1: [Int], array2: [Int]) -> [Int] {
var temp = [Int]()
var diff = 0
var sum = 0;
if(array1.count > array2.count) {
diff = array1.count - array2.count
temp = fillUpArray(array: array2, n: diff)
sum = arrayToInt(array: temp) + arrayToInt(array: array1)
} else if(array2.count > array1.count) {
diff = array2.count - array1.count
temp = fillUpArray(array: array1, n: diff)
sum = arrayToInt(array: temp) + arrayToInt(array: array2)
} else {
sum = arrayToInt(array: array1) + arrayToInt(array: array2)
}
return intToArray(number: &sum)
}
private func arrayToInt(array: [Int]) -> Int {
var number = 0
var mult = 1
for i in stride(from: array.count - 1, through: 0, by: -1) {
number += array[i] * mult
mult *= 10
}
return number
}
private func intToArray(number: inout Int) -> [Int] {
var result = [Int]()
var temp = 0
while number != 0 {
temp = number % 10
result.append(temp)
number = number / 10
}
return result.reversed()
}
private func fillUpArray(array: [Int], n: Int) -> [Int] {
var result = [Int]()
for _ in 0..<n {
result.append(0)
}
for j in array {
result.append(j)
}
return result
}
}