-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathac415.go
51 lines (47 loc) · 1.02 KB
/
ac415.go
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
package problem415
func addStrings(num1 string, num2 string) string {
str1 := []rune(num1)
str2 := []rune(num2)
ans := make([]rune, 0)
var carry rune = 0
for i, j := len(str1)-1, len(str2)-1; i >= 0 || j >= 0 || 1 == carry; i, j = i-1, j-1 {
var x, y rune = 0, 0
if i >= 0 {
x = str1[i] - '0'
}
if j >= 0 {
y = str2[j] - '0'
}
bit := (x+y+carry)%rune(10) + '0'
carry = (x + y + carry) / rune(10)
ans = append(ans, bit)
}
for i, j := 0, len(ans)-1; i < j; {
ans[i], ans[j] = ans[j], ans[i]
i++
j--
}
return string(ans)
}
func addStrings2(num1 string, num2 string) string {
ans := make([]byte, 0)
carry := byte(0)
for i, j := len(num1)-1, len(num2)-1; i >= 0 || j >= 0 || byte(1) == carry; i, j = i-1, j-1 {
var x, y byte
if i >= 0 {
x = num1[i] - '0'
}
if j >= 0 {
y = num2[j] - '0'
}
bit := (x+y+carry)%10 + '0'
carry = (x + y + carry) / 10
ans = append(ans, bit)
}
for i, j := 0, len(ans)-1; i < j; {
ans[i], ans[j] = ans[j], ans[i]
i++
j--
}
return string(ans)
}