j
jaryue
V1
2023/04/03阅读:18主题:默认主题
leetcode415字符串相加
leetcode
题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123" 输出:"134" 示例 2:
输入:num1 = "456", num2 = "77" 输出:"533" 示例 3:
输入:num1 = "0", num2 = "0" 输出:"0"
提示:
1 <= num1.length, num2.length <= 104 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/add-strings 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
法1
过程模拟: 模拟数字相加的过程,满10进1
b = s[j] + l[i] - 96 + b
l[i] = b%10 + 48
b /= 10
i--
j--
执行结果
法1
func addLtoS(l []byte, s string) string {
for b, i, j := byte(0), len(l)-1, len(s)-1; j >= 0 || b > 0; {
if j >= 0 {
b = s[j] + l[i] - 96 + b
l[i] = b%10 + 48
b /= 10
i--
j--
} else {
if i < 0 {
b = 1
return "1" + string(l)
} else {
b = l[i] - 48 + b
l[i] = b%10 + 48
b /= 10
i--
}
}
}
return string(l)
}
func addStrings(num1 string, num2 string) string {
if len(num1) > len(num2) {
return addLtoS([]byte(num1), num2)
}
return addLtoS([]byte(num2), num1)
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2.3 MB , 在所有 Go 提交中击败了 99.83% 的用户 通过测试用例: 317 / 317 炫耀一下:
法2
法3
作者介绍
j
jaryue
V1