LeetCode No43. 字串相乘
阿新 • • 發佈:2022-05-17
題目
定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。
注意:不能使用任何內建的 BigInteger 庫或直接將輸入轉換為整數。
示例 1:
輸入: num1 = "2", num2 = "3"
輸出: "6"
示例 2:
輸入: num1 = "123", num2 = "456"
輸出: "56088"
提示:
1 <= num1.length, num2.length <= 200
num1 和 num2 只能由數字組成。
num1 和 num2 都不包含任何前導零,除了數字0本身。
思路
手寫大數乘法,注意前導0。
AC程式碼
點選檢視程式碼
class Solution { public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) { return "0"; } char[] char1 = num1.toCharArray(); char[] char2 = num2.toCharArray(); int len = char1.length + char2.length; int[] result = new int[len]; for (int i = 0; i < char1.length; i++){ for (int j = 0; j < char2.length; j++){ result[i + j + 1] += (int)(char1[i]-'0') * (int)(char2[j]-'0'); } } for(int k = result.length-1; k > 0; k--){ result[k - 1] += result[k] / 10; result[k] %= 10; } int index = result[0] == 0 ? 1 : 0; StringBuffer ans = new StringBuffer(); while (index < len) { ans.append(result[index]); index++; } return ans.toString(); } }