计算两个字符串长度的较小值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)