每天一道LeetCode-----字符串乘法
生活随笔
收集整理的這篇文章主要介紹了
每天一道LeetCode-----字符串乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原題鏈接Multiply Strings
意思是給兩個字符串,代表兩個整數,求這兩個整數的積,以字符串的形式返回
主要注意的地方在這兩個字符串可能很長,遠遠超過了long long int所表示的范圍,所以當初耍小聰明直接用std::stringstream獲取兩個整數再相乘就果斷的溢出了
所以這種問題還是實打實的用字符串計算比較好,當然需要點技巧,算法題很少用蠻力法硬算的…
首先還是找規律,對于字符串1的某一位乘字符串2的某一位,乘積的結果在整個結果的哪一位呢,能不能找到某種規律直接定位,這樣就簡單多了。
先看一下乘法運算
上式中直接用下標代表對應位的值,乘號左邊代表num1的值,右邊代表num2的值,比如0 * 1代表num1[0] * num2[1]
注意這里,0*0中0+0=0,正好是結果的第0位,0*1中0+1=1,1*0中1+0=1剛好是結果的第1位
所以根據下標很容易定位到結果的位置
又因為0*0可能會進位,所以在結果中每一位都后移一位,即0*0是第1位….,第0位用來存最后的進位
這樣代碼就容易寫出了
總結
以上是生活随笔為你收集整理的每天一道LeetCode-----字符串乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天一道LeetCode-----给定序
- 下一篇: 每天一道LeetCode-----最长无