字串相乘
給定兩個以字串形式表示的非負整數 num1
和 num2
,返回 num1
和 num2
的乘積,它們的乘積也表示為字串形式
示例:
輸入: num1 = "2", num2 = "3"
輸出:“6”
思路
按照平時計算乘法的方式:豎式乘法。 把 num1
和 num2
的每一位都分別相乘,結果儲存在陣列中,然後把乘積相加。 但是在實際的計算中,可以進行優化,在計算每一位的乘積的時候,把上一位的進位也考慮進去,這樣程式碼更優雅一些。
關鍵部分
num1[i] * num2[j] 的結果,本位儲存在 sumArr[i+j+1],進位儲存在 sumArr[i+j], 當計算下一位的時候,把本位的積加上上一位的進位,就能算出當前的本位與進位。重複這一過程,直到兩個字串中每一位都已經相乘過了,陣列中儲存的就是計算結果。
func multiply(num1 string, num2 string) string {
if num1 == "0" || num2 == "0" {
return "0"
}
sumArr := make([]int, len(num1) + len(num2))
for i := len(num2)-1; i >= 0; i -- {
n2 := int(num2[i] - '0')
for j := len(num1)-1; j >= 0; j -- {
n1 := int(num1[j] - '0')
sum := n2 * n1 + sumArr[i+j+1]
sumArr[i+j+1] = sum % 10
sumArr[i+j] += sum / 10
}
}
res := ""
for k, v := range sumArr {
if k == 0 && v == 0 {
continue
}
res += string(v + '0')
}
return res
}
公眾號:沒有夢想的阿巧 後臺回覆 "群聊",一起學習,一起進步
相關文章
- 字串相乘——求字串的乘積字串
- leetcode:字串相乘(java)LeetCode字串Java
- 力扣oj-字串相乘力扣字串
- 力扣#43 字串相乘(C++)力扣字串C++
- LeetCode-043-字串相乘LeetCode字串
- 【每週例題】力扣 C++ 字串相乘力扣C++字串
- 十字相乘與雙十字相乘
- 矩陣相乘矩陣
- OpenMP版本矩陣相乘矩陣
- C#陣列相乘C#陣列
- 大數相乘解決方案
- (陣列)大數相乘,相加陣列
- 長資料相乘問題
- 大數相乘(浮點數)實現
- HDU 4920 Matrix multiplication(矩陣相乘)矩陣
- python兩個三階矩陣相乘Python矩陣
- Java大數相乘(使用BigInteger和BigDecimal)JavaDecimal
- 一個關於JS解決陣列相乘問題JS陣列
- [work] python list中數字與一個數相乘Python
- 兩位數相乘的速演算法靠譜嗎?演算法
- 矩陣相乘優化演算法實現講解矩陣優化演算法
- pytorch多維張量相乘和廣播機制示例PyTorch
- javascript如何解決浮點數相乘出現誤差問題JavaScript
- 字串-字串分割字串
- Hadoop 2.6 使用Map Reduce實現矩陣相乘1 矩陣轉置Hadoop矩陣
- 字串-簡單字串排序字串排序
- 實戰資料結構(9)_單連結串列實現多項式的相乘資料結構
- 字串-簡單字串比較字串
- 字串查詢(字串雜湊)字串
- 比較字串和數字串字串
- xml字串轉JSON字串XML字串JSON
- 字串字串
- MySQL 字串函式:字串擷取MySql字串函式
- py匹配字串中間的字串字串
- 第七章——字串(字串效能)字串
- 比較字串和數字串(續)字串
- JavaFX教程-字串和字串表示式Java字串
- iOS 擷取字串中兩個指定字串中間的字串iOS字串