public String multiply(String num1, String num2) {
if(num1.equals("0")||num2.equals("0"))
return "0";
char[] chars = num1.toCharArray();
String res="";
for(int i=chars.length-1;i>=0;i--){
String tmp = multiply(chars[i],num2,chars.length-1-i);
res=add(res,tmp);
}
return res;
}
private String add(String res, String tmp) {
if(res.equals(""))
return tmp;
String helper;
if(res.length()>tmp.length()){
helper=tmp;
}else{
helper=res;
res=tmp;
}
int carry=0;
char[] chars = res.toCharArray();
char[] helperChars = helper.toCharArray();
for(int i=helper.length()-1,j=res.length()-1;i>=0&&j>=0;i--,j--){
int sum = Integer.parseInt(chars[j] + "") + Integer.parseInt(helperChars[i] + "") + carry;
chars[j]= (char) (sum%10+'0');
carry=sum/10;
if(i==0){
while(carry>0){
j--;
if(j>=0){
int sum2 = carry + Integer.parseInt(chars[j] + "");
chars[j]=(char) (sum2%10+'0');
carry=sum2/10;
}else{
return carry+String.copyValueOf(chars);
}
}
}
}
return String.copyValueOf(chars);
}
private String multiply(char aChar, String num2,int zero) {
char[] chars = num2.toCharArray();
Integer a = Integer.valueOf(aChar+"");
StringBuilder sb=new StringBuilder();
int carry=0;
for(int i=chars.length-1;i>=0;i--){
Integer b = Integer.valueOf(chars[i] + "");
int temp = a * b + carry;
carry= temp /10;
sb.insert(0,temp%10);
}
if(carry>0)
sb.insert(0,carry);
while(zero>0){
sb.append("0");
zero--;
}
return sb.toString();
}