0
点赞
收藏
分享

微信扫一扫

字符串整数相加--go语言

兔八哥软件爱分享 2022-01-31 阅读 74

字符串相加可以使用竖式求和我们使用代码模拟该运算过程。
从后先前取字符 —模拟从低位运算
使用两个指针分别指向两个字符串要求和的字符,求和后,再与后一位的进位1或者0相加后,得到计算结果为w
是否有进位,确定真正的这一位—模拟进位
判断w是否大于10 ,如果大于10那么就产生进位1,计算结果记w%10为否者设置进位为0,计算结果就记w,有后向前存到切片数组中;
循环执行以上两步
两个指针向前移动,循环执行,如果某个指针指向负数,那么将对应的字符作为0参与运算,直到所有的字符参与运算。
最后还要看最高位运算是否有就进位。
注意点:
从字符串中取出的字符是对应字符的ASCII码,对其操作的时候需要 -'0’
例如:

在这里插入图片描述

func addStrings(num1 string, num2 string) string {
var x, y, z byte
	//取大的长度
	var ln int
	if len(num1) > len(num2) {
		ln = len(num1)
	} else {
		ln = len(num2)
	}
	//保存结果的切片
	ans := make([]byte, ln+1)
	p, q := len(num1)-1, len(num2)-1
	for i := ln; i > 0; i-- {
		//两个指针指向低位
		if p >= 0 {
			x = num1[p] - '0'
		} else {
			x = 0
		}
		if q >= 0 {
			y = num2[q] - '0'
		} else {
			y = 0
		}
		wei := x + y + z //计算
		if wei < 10 {
			z = 0
		} else {
			z = 1
			wei %= 10
		}
		//保存结果
		ans[i] = wei + '0'
		p--
		q--
	}
	if z == 1 {
		ans[0] = 1 + '0'
	} else {
		ans = ans[1:]
	}

	return string(ans)
}
举报

相关推荐

0 条评论