简简单单记录一下这个题目,墨迹了好长时间,题目本身也许不难,但是最近刚学Python,拿来练手 墨迹了好久
难度简单668
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
Python的字符串属于不可变对象,对于字符串中的单个字符可以访问、读取,但是不能修改
示例 1:
输入: num1 = "11", num2 = "123"
输出: "134"
示例 2:
输入: num1 = "456", num2 = "77"
输出: "533"
示例 3:
输入: num1 = "0", num2 = "0"
输出: "0"
提示:
1 <= num1.length, num2.length <= 104num1和num2都只包含数字0-9num1和num2都不包含任何前导零
通过次数248,341提交次数451,683
'''
Descripttion: 知足上进 不负野心
version: 1.01
Author: Twi_etn
Date: 2023-02-05 16:11:15
LastEditors: Twi_etn
LastEditTime: 2023-02-05 16:35:59
'''
#
# @lc app=leetcode.cn id=415 lang=python3
#
# [415] 字符串相加
#
# @lc code=start
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
num1 = num1[::-1]
num2 = num2[::-1]
len1,len2 = len(num1), len(num2)
if len1 > len2:
len1,len2 = len2,len1
num1,num2 = num2,num1
# 一定是字符串2长
lenth = min(len1, len2)
grad = 0
ans = ''
for i in range(0, lenth):
a = ord(num1[i])
a -= 48
b = ord(num2[i])
b -= 48
ans = ans + chr((a + b + grad) % 10 + 48)
grad = (a + b + grad) // 10
for i in range(lenth, max(len1,len2)):
b = ord(num2[i])
b -= 48
ans = ans + chr((b + grad) % 10 + 48)
grad = (b + grad) // 10
if grad:
ans = ans + '1'
ans = ans[::-1]
return ans
# @lc code=end