415.add-strings.go 551 B

123456789101112131415161718192021222324252627282930
  1. func addStrings(num1 string, num2 string) string {
  2. m, n := len(num1), len(num2)
  3. n1, n2 := []rune(num1), []rune(num2)
  4. if m < n {
  5. m, n = n, m
  6. n1, n2 = n2, n1
  7. }
  8. carry := '0'
  9. for i, j := m-1, n-1; 0 <= i; i, j = i-1, j-1 {
  10. var b rune
  11. if j < 0 {
  12. if carry == '0' {
  13. break
  14. }
  15. b = '0'
  16. } else {
  17. b = n2[j]
  18. }
  19. n1[i], carry = add(n1[i], b, carry)
  20. }
  21. if carry != '0' {
  22. return "1" + string(n1)
  23. }
  24. return string(n1)
  25. }
  26. func add(a, b, c rune) (rune, rune) {
  27. num := a + b + c - 144 // 3 * '0'
  28. return num%10 + '0', num/10 + '0'
  29. }