题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 计算两个数之和
 * @param s string字符串 表示第一个整数
 * @param t string字符串 表示第二个整数
 * @return string字符串
*/
func solve(s string, t string) string {
	lens := len(s)
	lent := len(t)
	cap := lens + 1
	if lent > cap {
		cap = lent + 1
	}
	arr := make([]int, cap)
	var num int = '0'
	i, j, k, c := lens-1, lent-1, 0, 0
	for i >= 0 || j >= 0 {
		arr[k] = c
		c = 0 
		if i >= 0 {
			arr[k] += int(s[i]) - num
			i--
		}
		if j >= 0 {
			arr[k] += int(t[j]) - num
			j--
		}
		if arr[k] >= 10 {
			arr[k] -= 10
			c = 1
		}
		k++
	}
	if c > 0 {
		arr[k] = c
		k++
	}

	res := make([]byte, k)
	for i = 0; i < k; i++ {
		res[k-1-i] = byte(arr[i] + num)
	}
	return string(res)
}

全部评论

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务