题解 | #大数加法#

大数加法

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)
}

全部评论

相关推荐

点赞 评论 收藏
分享
挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
04-21 13:50
已编辑
北京理工大学 硬件测试
我们学校连夜发了声明,绝了绝了!看完了全部ppt,震碎三观。一般情况下我是站学生的,但这不是一般情况。这男的不能被取消学位吗?自己吃到了红利,靠着面试泄题得到的保研,又反手举报导师。这导师是《被举报系列》里最惨最恋爱脑的了,当然最可怜的是他的同妻……
牛客小黄鱼:看了ppt的聊天记录,真不知道谁才是受害者!有人为你剥过柚子吗?有人为你雪地里等你吗?有人为你写过情书吗?有人为你规划未来吗?有人为你小心翼翼吗?有人为你整页失眠失眠吗? 有人为你送上自己的科研成果吗?有人为你安排出国留学吗?有人愿意给你一个月2万吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务