题解 | #大数加法#

大数加法

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

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 计算两个数之和
 * @param s string字符串 表示第一个整数
 * @param t string字符串 表示第二个整数
 * @return string字符串
 */
func solve(s string, t string) string {
	// write code here
	if s == "" && t == "" {
		return "0"
	}
	if s == "" {
		return t
	}
	if t == "" {
		return s
	}
	//计算结果
	res := make([]byte, 0)
	var offset byte = 0
	var tmp10 byte = '1' + '9'
	i, j := len(s)-1, len(t)-1
	for ; i >= 0 || j >= 0; i, j = i-1, j-1 {
		var (
			c1 byte = '0'
			c2 byte = '0'
		)
		if i >= 0 {
			c1 = s[i]
		}
		if j >= 0 {
			c2 = t[j]
		}
		cv := c1 + c2 + offset
		if cv >= tmp10 {
			res = append(res, cv-tmp10+'0')
			offset = 1
		} else {
			res = append(res, cv-'0')
			offset = 0
		}
	}
	if offset == 1 {
		res = append(res, '1')
	}
	//逆序res
	for i, j = 0, len(res)-1; i < j; i, j = i+1, j-1 {
		res[i], res[j] = res[j], res[i]
	}
	return string(res)
}

全部评论

相关推荐

你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务