原题
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note:
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
解法1
定义一个函数, 将string转化为int, 我们遍历字符串, 使用ord函数计算每个数字跟’0’的距离. 最后将int转化为string.
Time: 2*O(n)
Space: O(1)
代码
class Solution(object):
def addStrings(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
return str(self.stringToInt(num1) + self.stringToInt(num2))
def stringToInt(self, s):
ans = 0
for i in range(len(s)):
ans += (ord(s[i]) - ord('0'))*10**(len(s) - 1 - i)
return ans
解法2
同解法1
代码
class Solution(object):
def addStrings(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
def getNum(num):
ans = 0
for d in num:
ans = 10*ans + ord(d) - ord('0')
return ans
return str(getNum(num1) + getNum(num2))