LeetCode Top Interview Questions 43. Multiply Strings (Java版; Medium)
题目描述
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.
Example 1:
Input: num1 = "2", num2 = "3"
Output: "6"
Example 2:
Input: num1 = "123", num2 = "456"
Output: "56088"
Note:
The length of both num1 and num2 is < 110.
Both num1 and num2 contain only digits 0-9.
Both num1 and num2 do not contain any leading zero, except the number 0 itself.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
Remember how we do multiplication?
Start from right to left, perform multiplication on every pair of digits, and add them together. Let's draw the process! From the following draft, we can immediately conclude:
`num1[i] * num2[j]` will be placed at indices `[i + j`, `i + j + 1]`
public String multiply(String num1, String num2){int m = num1.length(), n = num2.length();int[] pos =newint[m + n];for(int i = m -1; i >=0; i--){for(int j = n -1; j >=0; j--){int mul =(num1.charAt(i)-'0')*(num2.charAt(j)-'0');int p1 = i + j, p2 = i + j +1;int sum = mul + pos[p2];
pos[p1]+= sum /10;
pos[p2]=(sum)%10;}}
StringBuilder sb =newStringBuilder();for(int p : pos)//很巧妙的去掉了最高位的0if(!(sb.length()==0&& p ==0))
sb.append(p);return sb.length()==0?"0": sb.toString();}
welcome to my blogLeetCode Top Interview Questions 43. Multiply Strings (Java版; Medium)题目描述Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2,...