Lea dos números en forma de cadena, escriba una función para calcular su suma y devuélvala en forma de cadena.
(La longitud de la cadena no es mayor a 100000 y se garantiza que la cadena solo se compone de 10 caracteres del '0' al '9')
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 计算两个数之和
# @param s string字符串 表示第一个整数
# @param t string字符串 表示第二个整数
# @return string字符串
#
class Solution:
def solve(self , s , t ):
maxlen = len(s)
if maxlen < len(t):
maxlen = len(t)
s = s.zfill(maxlen)
t = t.zfill(maxlen)
shiwei = 0
sum = ''
for i in range(-1,-maxlen-1,-1):
temp= ord(s[i]) +ord(t[i]) - 96 + shiwei
if temp >= 10:
shiwei = 1
temp = temp - 10
else:
shiwei=0
sum+=str(temp)
if shiwei != 0:
sum+=str(shiwei)
return sum[::-1]
Puntos clave principales
- uso de la función zfill: relleno alineado a la derecha
- rango (-1, -maxlen-1, -1): es decir, comenzando desde el último bit
- El significado de la función ord (s [i]); convierta la cadena en el número correspondiente del código ASCII, si es un número puro, se requiere -48
- [:: - 1] Significado: enviar la cadena en reversa.
prueba:
s="733064366"
t="459309139"
print(s)
print(t)
maxlen = len(s)
if maxlen < len(t):
maxlen = len(t)
s = s.zfill(maxlen)
t = t.zfill(maxlen)
print(s)
print(t)
# print(maxlen)
shiwei = 0
sum = ''
for i in range(-1,-maxlen-1,-1):
#print(i)
temp= ord(s[i]) +ord(t[i]) - 96 + shiwei
if temp >= 10:
shiwei = 1
temp = temp - 10
else:
shiwei=0
sum+=str(temp)
if shiwei != 0:
sum+=str(shiwei)
print(sum[::-1])