题解 | #大数加法#

大数加法

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

全部评论

相关推荐

02-16 22:13
门头沟学院 Java
Yki_:女生学成这样挺不错了,现在停止网课,立刻all in八股,从最频繁的开始背,遇到不会的知识点直接问AI,项目也别手敲,直接看技术文档,背别人总结好的面试官可能问的问题的答案,遇到不会的再去代码里找具体实现就可以了,3月份开始边背边投实习约面
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务