這種方法就是按照我們通常的思路,讓乙個數和另乙個數的每一位相乘,然後把結果加起來。其中我用到了兩個輔助函式:
字串相加。也就是兩個字串相加得到乙個結果
乙個字串和乙個字元相乘,得到乙個字串
但是我寫的**有問題,就是當乙個數為0的情況時,會返回多個0。但看通過率的話我只有5個測試用例沒有通過,也就不想改了。畢竟時間太緊張,沒時間了。**如下:
class
solution
return result;
}private string multi
(string num,
char c)
if(carry !=0)
//將有效的carry放到結果中
sb.(carry)
;return sb.
reverse()
.tostring()
;}//兩個數字相加
private string add
(string num1, string num2)
else
sb.(sum %10)
;//將結果所得餘數拼接起來}if
(carry ==1)
sb.(carry)
;//將有效的進製也拼接起來
return sb.
reverse()
.tostring()
;//逆序輸出
}}
該演算法是通過兩數相乘時,乘數某位與被乘數某位相乘,與產生結果的位置的規律來完成。具體規律如下:
結合下圖更容易理解:
**如下:
class
solution
int[
] res =
newint
[num1.
length()
+ num2.
length()
];for(
int i = num1.
length()
-1; i >=
0; i--)}
stringbuilder result =
newstringbuilder()
;for
(int i =
0; i < res.length; i++
)return result.
tostring();}}
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只包含...
leetcode43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...