欢迎来到田晓东的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

python算法题

题1大数加法:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

'''
代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
计算两个数之和
@param s string字符串 表示第一个整数
@param t string字符串 表示第二个整数
@return string字符串
'''
class Solution:
    def solve(self , s , t ):      #10,9999
        # write code here
        full = 0 #保存进位
        l1,l2 = len(s),len(t)
        length_max = max(l1,l2)
        result = ''
        for i in range(length_max):
            if i<l1:
                x1 = int(s[l1-i-1])
            else:
                x1 = 0
            if i<l2:
                x2 = int(t[l2-i-1])
            else:
                x2 = 0
            tem = x1+x2+full
            if tem >=10: #判断进位
                full =1
                result += (str(tem-10))
            else:
                full = 0
                result += (str(tem))
        if full == 1: #判断首位是否进位
            result += '1'
        return result[::-1]
        
解析:本题基本思想就为和计算
1、对应位数的数相加,即个位与个位相加,十位与十位相加
2、各相加结果是否需要进位,如需进位,则该位数的上一位相加时需加1;不需进位则保留该值

编程实现需考虑:
1、如何实现从个位开始相加:s[l1-i-1]
2、超出位数时,需以0代替该位的值
3、相加的和大于10,取与10的差;在最后两位数相加后需继续按此实现且进一位(即该字符串后拼接1)
4、将相加的和依次实现从左至右排列难以实现,则先从右至左排列,后以倒序方式返回即可:result[::-1]

posted on 2022-03-09 23:28  匍匐的仰望者  阅读(142)  评论(0编辑  收藏  举报

导航