LeetCode练习-简单 -415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路一:模拟竖列相加
前后双指针依次从尾部相加进位
时间复杂度: O(n)
空间复杂度: O(1)
func addStrings(num1 string, num2 string) string {
add:=0
res:=""
//i>=0||j>=0|| add!=0--i>=0||j>=0指相加数字双方有可能不一样位数 ||add!=0--相加双方相同位数但是和可进一位数
for i,j := len(num1)-1,len(num2)-1;i>=0||j>=0|| add!=0;i, j = i - 1, j - 1 {
var x,y int
//'0' :对应的整型ascll码是48;相减得整数
if i<=0 {
x=int(num1[i]-'0')
}
if j<=0 {
y=int(num2[j]-'0')
}
num:=x+y+add
//取出余数转字符串后组合
res = strconv.Itoa(num%10) + res
//取出进位数
add=num/10
}
return res
}