您的位置:首页 > 其它

43. Multiply Strings

2016-11-17 12:35 218 查看
本来想循环遍历两个字符串,求出乘积再加上i+j个0,再不断累加到rst。

超时

在讨论区看到有个模拟乘法运算的程序


43. Multiply Strings

 

Question
Editorial Solution
 My Submissions

Total Accepted: 81803
Total Submissions: 320475
Difficulty: Medium
Contributors: Admin

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.
Converting the input string to integer is NOT allowed.
You should NOT use internal library such as BigInteger.

public class Solution {

public String inverse(String s) {
return new StringBuilder(s).reverse().toString();
}

public String multiply(String num1, String num2) {
char[] cs1 = inverse(num1).toCharArray();
char[] cs2 = inverse(num2).toCharArray();
int[] mul = new int[cs1.length+cs2.length];

for(int i=0; i<cs1.length; i++) {
for(int j=0; j<cs2.length;
4000
j++) {
int t = (cs1[i]-'0') * (cs2[j]-'0');
int p1 = i+j, p2=i+j+1;
int sum = t + mul[p1];

mul[p1] = sum%10;
mul[p2] += sum/10;

}
}

StringBuilder sb = new StringBuilder();
int pos = mul.length - 1;
while(pos>=0 && mul[pos] == 0)	pos --;
for(int i=pos; i>=0; i--)
sb.append(mul[i]);

return sb.length() == 0 ? "0" : sb.toString();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: