43. 字符串相乘
https://leetcode.cn/problems/multiply-strings/
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
提示:
1 <= num1.length, num2.length <= 200num1 和 num2 只能由数字组成。num1 和 num2 都不包含任何前导零,除了数字0本身。- package demo;
-
- public class multiply {
- public static void main(String[] args) {
- String s1 = "123",s2 = "45";
- System.out.println(multiply(s1, s2));
- }
-
- public static String multiply(String num1,String num2) {
- StringBuilder s = new StringBuilder();
- int i = num1.length()-1,j = num2.length()-1;
- int[] n = new int[i+j+2];
- for (i = num1.length()-1; i >= 0; i--) {
- for (j = num2.length()-1; j >= 0; j--) {
- int chary = (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
- chary += n[i+j+1];//加最后一位,判断进位
- n[i+j] += chary/10;
- n[i+j+1] = chary%10;
- }
- }
- int flag = 0;
- for (int k = 0; k < n.length; k++) {
- if(flag==0&&n[k]==0) {
- continue;
- }else {
- flag = 1;
- }
- s.append(n[k]);
- }
- return s.toString();
- }
- }