字符串相加
题目
官解-常规解法
func addStrings(num1 string, num2 string) string {
add := 0
ans := ""
for i, j := len(num1) - 1, len(num2) - 1; i >= 0 || j >= 0 || add != 0; i, j = i - 1, j - 1 {
var x, y int
if i >= 0 {
x = int(num1[i] - '0')
}
if j >= 0 {
y = int(num2[j] - '0')
}
result := x + y + add
ans = strconv.Itoa(result%10) + ans
add = result / 10
}
return ans
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/add-strings/solution/zi-fu-chuan-xiang-jia-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
效果
字符数组构造字符串
func addStrings(num1 string, num2 string) string {
l1 := len(num1)
l2 := len(num2)
l := l1
if l < l2 {
l = l2
}
add := 0
r := make([]byte, l+1, l+1)
for i := l - 1; i >= 0; i-- {
i1 := i - (l - l1)
i2 := i - (l - l2)
a := 0
b := 0
if i1 >= 0 {
a = int(num1[i1] - '0')
}
if i2 >= 0 {
b = int(num2[i2] - '0')
}
r[i+1] = byte(((a+b+add) % 10) + '0')
add = (a+b+add) / 10
}
if add == 0 {
return string(r[1:])
}
r[0] = '1'
return string(r)
}
作者:import-7e
链接:https://leetcode-cn.com/problems/add-strings/solution/100-by-import-7e-esby/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
效果
//稍微有点取巧
附上两篇对字符串拼接有参考价值的博客
https://www.jianshu.com/p/7cc...
https://hermanschaaf.com/effi...
字符串相乘
取出字符分别相乘
建一个int数组,按权值存储每次相乘的结果
再将其转换为字符串
func multiply(num1 string, num2 string) string {
if num1 == "0" || num2 == "0" {
return "0"
}
m, n := len(num1), len(num2)
ansArr := make([]int, m + n)
for i := m - 1; i >= 0; i-- {
x := int(num1[i]) - '0'
for j := n - 1; j >= 0; j-- {
y := int(num2[j] - '0')
ansArr[i + j + 1] += x * y
}
}
for i := m + n - 1; i > 0; i-- {
ansArr[i - 1] += ansArr[i] / 10
ansArr[i] %= 10
}
ans := ""
idx := 0
if ansArr[0] == 0 {
idx = 1
}
for ; idx < m + n; idx++ {
ans += strconv.Itoa(ansArr[idx])
}
return ans
}
效果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。