题目:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/ad… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法:
注意求余数部分是num = num % 10以及carry要置0
var m = map[byte]int{
byte('0'):0,
byte('1'):1,
byte('2'):2,
byte('3'):3,
byte('4'):4,
byte('5'):5,
byte('6'):6,
byte('7'):7,
byte('8'):8,
byte('9'):9,
}
func addStrings(num1 string, num2 string) string {
l1, l2 := len(num1) - 1, len(num2) - 1
ans := ""
carry := 0
for 0 <= l1 && 0 <= l2 {
num := m[num1[l1]] + m[num2[l2]] + carry
if num >= 10 {
carry = 1
num = num % 10
} else {
carry = 0
}
ans = fmt.Sprintf("%d", num) + ans
l1 --
l2 --
}
for 0 <= l1 {
num := m[num1[l1]] + carry
if num >= 10 {
carry = 1
num = num % 10
} else {
carry = 0
}
l1 --
ans = fmt.Sprintf("%d", num) + ans
}
for 0 <= l2 {
num := m[num2[l2]] + carry
if num >= 10 {
carry = 1
num = num % 10
} else {
carry = 0
}
l2 --
ans = fmt.Sprintf("%d", num) + ans
}
if carry == 1 {
ans = fmt.Sprintf("%d", 1) + ans
}
return ans
}