123456789101112131415161718192021222324252627282930 |
- func addStrings(num1 string, num2 string) string {
- m, n := len(num1), len(num2)
- n1, n2 := []rune(num1), []rune(num2)
- if m < n {
- m, n = n, m
- n1, n2 = n2, n1
- }
- carry := '0'
- for i, j := m-1, n-1; 0 <= i; i, j = i-1, j-1 {
- var b rune
- if j < 0 {
- if carry == '0' {
- break
- }
- b = '0'
- } else {
- b = n2[j]
- }
- n1[i], carry = add(n1[i], b, carry)
- }
- if carry != '0' {
- return "1" + string(n1)
- }
- return string(n1)
- }
- func add(a, b, c rune) (rune, rune) {
- num := a + b + c - 144 // 3 * '0'
- return num%10 + '0', num/10 + '0'
- }
|