GO-算法--字符串相关

一:两数想加(415)

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"
示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"
示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

func addStrings(num1 string, num2 string) string {
    /**
    思路分析:
    模拟个位加个位,依次加,保留是否进1,使用- '0'把ascii码转成int

    **/

    //开始

    //记录进位
    add := 0
    res := ""

    for i, j := len(num1) - 1 , len(num2) - 1; i >= 0 || j >= 0 || add > 0; i, j = i-1, j-1 {
        x, y := 0, 0
        if i >= 0 {
            //将ascii码转换成int
            x = int(num1[i] - '0')
        }

        if j >= 0 {
            //将ascii码转换成int
            y = int(num2[j] - '0')
        }
        
        //将int转换成字符串int,用string会转换成字母比如97是a
        //这里x+y一定要加上 add
        res = strconv.Itoa(( x + y + add ) % 10) + res
        //求进位
        //这里x+y一定要加上 add
        add = ( x + y + add ) / 10
    }

    return res
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值