#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 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"