计算两个字符串长度的较小值min_len,较大值max_len。从两个字符串尾部往头部相加每个数字,保存进位,先运行min_len次,再运行max_len - min_len次。结果保存在列表中。最终将列表反转,返回字符串。
时间复杂度O(n),空间复杂度O(n)

class Solution:
    def solve(self , s , t ):
        ch_lst = list()
        max_len = max(len(s), len(t))
        min_len = min(len(s), len(t))
        last_val = 0
        for i in range(-1, min_len * -1 - 1, -1):
            curr_val = int(s[i]) + int(t[i]) + last_val
            ch_lst.append(str(curr_val % 10))
            last_val = curr_val // 10
        for i in range(-min_len - 1, max_len * -1 - 1, -1):
            if len(s) < len(t):
                curr_val = int(t[i]) + last_val
                ch_lst.append(str(curr_val % 10))
                last_val = curr_val // 10
            else:
                curr_val = int(s[i]) + last_val
                ch_lst.append(str(curr_val % 10))
                last_val = curr_val // 10
        if last_val > 0:
            ch_lst.append(str(last_val))
        ch_lst.reverse()
        return ''.join(ch_lst)