- Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathadd_strings.go
47 lines (38 loc) · 779 Bytes
/
add_strings.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
package main
import (
"strconv"
"strings"
)
funcaddStrings(num1string, num2string) string {
varsb strings.Builder
i, j:=len(num1)-1, len(num2)-1
carry:=0
fori>=0||j>=0 {
sum:=carry
ifi>=0 {
digit, _:=strconv.Atoi(string(num1[i]))
sum+=digit
i--
}
ifj>=0 {
digit, _:=strconv.Atoi(string(num2[j]))
sum+=digit
j--
}
sb.WriteString(strconv.Itoa(sum%10))
carry=sum/10
}
ifcarry!=0 {
sb.WriteString(strconv.Itoa(carry))
}
result:=sb.String()
reversedResult:=reverseString(result)
returnreversedResult
}
funcreverseString(sstring) string {
runes:= []rune(s)
fori, j:=0, len(runes)-1; i<j; i, j=i+1, j-1 {
runes[i], runes[j] =runes[j], runes[i]
}
returnstring(runes)
}