大數相乘 LeetCode43 字串相乘

2021-08-29 05:20:54 字數 1378 閱讀 3232

題目

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。

示例 1:

輸入: num1 = "2", num2 = "3"

輸出: "6"

示例 2:

輸入: num1 = "123", num2 = "456"

輸出: "56088"

說明:num1 和 num2 的長度小於110。

num1 和 num2 只包含數字 0-9。

num1 和 num2 均不以零開頭,除非是數字 0 本身。

不能使用任何標準庫的大數型別(比如 biginteger)或直接將輸入轉換為整數來處理。

思路1

模擬乘法過程,記錄每個個位值和進製值。按列求和。

**1

class solution  

// 去掉前面的0

for(int i=0;i思路2

不用記錄每個個位值和進製值,用到時再算。按列求和。

class solution

res_array[k]+=(num1_array[j]*num2_array[i])%10;

}// 取進製

for(int i=0;i=num1_array.length || j<0)

res_array[k]+=(num1_array[j]*num2_array[i]-(num1_array[j]*num2_array[i])%10)/10;

}// 加上求和進製

res_array[k]+=qiuhejinwei;

int res_array_gewei=res_array[k]%10;

int res_array_shiwei=(res_array[k]-res_array[k]%10)/10;

qiuhejinwei=res_array_shiwei;

res_array[k]=res_array_gewei;

}string res="";

for(int i=res_array.length-1;i>=0;i--)

for(int i=0;i

}if(res.length()==0)

return res;}}

LeetCode43 兩數相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...

LeetCode43 字串相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 題目分析 如果兩個字串中有乙個為0,則結果是0 否則的話,將其中乙...

LeetCode43字串相乘

給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...