#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 1.为了方便从低位到高位相加将字符串反转
2. 从最低位开始相加 遇到进位 处理进位 ,如果某一一位不存在 当作 0
3.处理进位,每次相加之后计算进位,将进位转为对应的字符
4.每一位相加,反转
5. 字符和对应数值作为下标chars ="01234567890abcdefghijklmnopqrstuvwxyz"
6. 计算和模36 =当前值 计算和 //36 为进位
# @param A string字符串
# @param B string字符串
# @return string字符串
#
class Solution:
chars="0123456789abcdefghijklmnopqrstuvwxyz"
def thirtysixAdd(self , A: str, B: str) -> str:
# write code here
a=A[::-1] # 反转
b=B[::-1]
i=0
carry=0 # 进位
res=[] # 记录结果
while i <len(a) or i<len(b) or carry>0:
dig_a=self.chars.index(a[i]) if i<len(a) else 0
dig_b=self.chars.index(b[i]) if i<len(b) else 0
#print(dig_a,dig_b)
sum_num =dig_a+dig_b+carry
cur_num=sum_num%36
carry=sum_num//36
res.append(self.chars[cur_num]) # 拼接字符串结果
i+=1
res_str="".join(res[::-1])
# 去除前导0
res_str=res_str.lstrip("0")
if res_str!="":
return res_str
else:
return "0"