本文主要是介绍leetcode-415. 字符串相加,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
解题思路
模拟加法即可
除此之外,还可以利用数学性质,从前向后加,每次加完结果*10再加到后面去,省掉了自己写进位的麻烦。。。
代码
class Solution:def addStrings(self, num1: str, num2: str) -> str:ans = ''max_length = max(len(num1), len(num2))num1 = '0' * (max_length - len(num1)) + num1num2 = '0' * (max_length - len(num2)) + num2carry = 0for index in range(1, max_length + 1):cur_digit = int(num1[-index]) + int(num2[-index]) + carrycarry = cur_digit // 10cur_digit %= 10ans += str(cur_digit)if carry:ans += str(carry)return ans[::-1]
利用数学性质版:
class Solution:def addStrings(self, num1: str, num2: str) -> str:max_length = max(len(num1), len(num2))num1 = '0' * (max_length - len(num1)) + num1num2 = '0' * (max_length - len(num2)) + num2ans = 0for ch1, ch2 in zip(num1, num2):ans = ans * 10 + int(ch1) + int(ch2)return str(ans)
这篇关于leetcode-415. 字符串相加的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!