字符串相加
题目
文章图片
官解-常规解法
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【算法题-字符串3.20】效果
文章图片
字符数组构造字符串
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
}
效果
文章图片
推荐阅读
- 数据结构(C语言实现)|数据结构和算法复杂度简述
- LeetCode编程题解法汇总|力扣解法汇总2039-网络空闲的时刻
- java|LeetCode(561. Array Partition(数组分割))
- leetcode|leetcode:词典中最长的单词
- LeetCode|LeetCode 432. 全 O(1) 的数据结构(双向链表+哈希表) / 720. 词典中最长的单词 / 2043. 简易银行系统
- LeetCode笔记|力扣4.寻找两个正序数组的中位数(java)
- Python基础语法|leetcode 961. 重复N次的元素(python)
- 算法与数据结构|Leetcode0720. 词典中最长的单词(simple)
- 数学|4. 寻找两个正序数组的中位数