欢迎光临
我们一直在努力

字符串相加

"""
字符串相加
需自行实现算法计算两个字符串相加结果,
不可以使用把字符串直接转成整数后相加。
"""

def string_zeroize(s1: str, s2: str):
    """
    使两个字符串长度相等,不足的部分用0填充。

    参数:
    s1: str - 第一个字符串
    s2: str - 第二个字符串

    返回:
    tuple - 填充后长度相等的两个字符串元组
    """
    s1_length = len(s1)
    s2_length = len(s2)
    if s1_length > s2_length:
        s2 = '0' * (s1_length - s2_length) + s2
    else:
        s1 = '0' * (s2_length - s1_length) + s1
    return s1, s2

def string_sum(s1: str, s2: str):
    """
    计算两个大字符串表示的数字的和。

    参数:
    s1: str - 第一个字符串表示的数字
    s2: str - 第二个字符串表示的数字

    返回:
    str - 两个数字相加后的结果字符串
    """
    # 首先使两个字符串长度相等,以便进行逐位相加
    s1, s2 = string_zeroize(s1, s2)
    result = []
    index = len(s1) - 1
    carry = 0  # 进位初始化为0

    # 从最低位开始,逐位相加,考虑进位
    while index >= 0:
        item_sum = int(s1[index]) + int(s2[index]) + carry
        carry = item_sum // 10  # 计算进位
        current = item_sum % 10  # 获取当前位的值
        result.insert(0, str(current))  # 将当前位的值插入结果列表的最前面
        index -= 1

    # 如果最高位有进位,将其添加到结果中
    if carry > 0:
        result.insert(0, str(carry))
    return ''.join(result)

if __name__ == '__main__':
    s1 = '912345678900987654321'
    s2 = '112345678900987654321'
    print(f'输出两个大数相加的结果:{string_sum(s1, s2)}')   # 输出两个大数相加的结果
赞(0) 打赏
未经允许不得转载:创想未来 » 字符串相加

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册