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.
public class Solution {
public String multiply(String num1, String num2) {
int[] result = new int[num1.length() + num2.length()];
StringBuffer final_result = new StringBuffer();
for(int i = num1.length() - 1; i >= 0; i--){
for(int j = num2.length() - 1; j >= 0; j--){
result[i+j+1] += charToInt(num1.charAt(i)) * charToInt(num2.charAt(j));
}
}
int addOn = 0;
for(int i = result.length - 1; i >= 0; i-- ){
result[i] += addOn;
addOn = result[i] / 10;
final_result.insert(0,intToChar(result[i]%10));
}
while(final_result.charAt(0) == '0' && final_result.length() > 1){
final_result.deleteCharAt(0);
}
return final_result.toString();
}
private int charToInt(char digit){
return (int)(digit - '0');
}
private char intToChar(int digit){
return (char)(digit + '0');
}
}
参考了http://n00tc0d3r.blogspot.com/2013/04/multiply-strings.html的Solution1.
通过将每一位的乘法结果存在result相印的位置中,简化了进位的运算