给定两个字符串数字,返回两数字相乘的结果字符串;如:String a="200",String b="10",要求返回"2000"。
问题分析:
解决这个问题的关键是在每个数字的相应位置增加数量。这是我们手工做乘法。
网络配图
Java解决方法,代码如下:
public class TestMultiply {
public static void main(String[] args) throws Exception {
System.out.println(multiply("200", "10"));
}
public static String multiply(String num1, String num2) {
String n1 = new StringBuilder(num1).reverse().toString();
String n2 = new StringBuilder(num2).reverse().toString();
int[] d = new int[num1.length() + num2.length()];
//multiply each digit and sum at the corresponding positions
for (int i = 0; i < n1.length(); i++) {
for (int j = 0; j < n2.length(); j++) {
d[i + j] += (n1.charAt(i) - '0') * (n2.charAt(j) - '0');
}
}
StringBuilder sb = new StringBuilder();
//calculate each digit
for (int i = 0; i < d.length; i++) {
int mod = d[i] % 10;
int carry = d[i] / 10;
if (i + 1 < d.length) {
d[i + 1] += carry;
}
sb.insert(0, mod);
}
//remove front 0's
while (sb.charAt(0) == '0' && sb.length() > 1) {
sb.deleteCharAt(0);
}
return sb.toString();
}
}