题解 | #大数乘法#
大数乘法
http://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
//校验字符串是否正确
if("0".equals(s) || "0".equals(t)) return "0";
if(!s.matches("^\\d*$") || !t.matches("^\\d*$")) return null;
//做乘法运算
int[] num = new int[s.length() + t.length()];
char[] sCharArray = s.toCharArray();
char[] tCharArray = t.toCharArray();
for(int i = sCharArray.length - 1;i >= 0; i--){
for(int j = tCharArray.length - 1;j >= 0; j--){
num[i+j+1] += (sCharArray[i] - '0') * (tCharArray[j] - '0');
}
}
int rs = 0;
for(int i = num.length - 1;i >= 0;i--){
int temp = num[i] + rs;
num[i] = temp % 10;
rs = temp / 10;
}
int curPos = 0;
StringBuilder sb = new StringBuilder();
while(curPos < num.length && num[curPos] == 0) {
curPos++;
}
for(int i = curPos; i < num.length; i++) {
sb.append(num[i]);
}
return sb.toString();
}
}