Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
Analysis:Step 1: Convert string to integer arrays. Note that the int of the char is acquired by char-'0'.
Step 2: Multiply the integer arrays into a combined one. res[i+j+1]+=n1[i]+n2[j].
Step 3: Convert array back to string.
LeetCode说我test case "0","0"没通过,明明在Eclipse通过了的,答案就""。不管了。
Solution:
1: public static String multiplyString(String num1, String num2)
2: {
3: if(num1.isEmpty()||num2.isEmpty()||num1=="0"||num2=="0")
4: return "0";
5: int l1=num1.length();
6: int l2=num2.length();
7: int[] n1=new int[l1];
8: int[] n2=new int[l2];
9: int[] res=new int[l1+l2];
10: //Convert string to integer arrays. Note that the int of the char is acquired by char-'0'.
11: for(int i = 0;i<l1;i++)
12: {
13: n1[i]=num1.charAt(i)-'0';
14: }
15: for(int i=0;i<l2;i++)
16: {
17: n2[i]=num2.charAt(i)-'0';
18: }
19: //Multiply the integer arrays into a combined one.
20: for(int i=0;i<l1;i++)
21: for(int j=0;j<l2;j++)
22: {
23: res[i+j+1]+=n1[i]*n2[j];
24: }
25: //Convert array back to string
26: StringBuilder sb= new StringBuilder();
27: for(int i=0;i<l1+l2;i++)
28: {
29: if(res[i]!=0)
30: sb.append(res[i]);
31: }
32: return sb.toString();
33: }
没有评论:
发表评论