public String multiply(String num1, String num2) {
    	if(num1.equals("0") || num2.equals("0") )return "0";
        int R = 200;
        int[] mul = new int[R];
        int k = R-1, min = Integer.MAX_VALUE;
        //multi
        for(int i = num2.length()-1; i >= 0; i--){
            int a = num2.charAt(i) - '0';
            int s = 0;
            int t = k;
            for(int j = num1.length()-1; j >= 0; j--){
                int b = num1.charAt(j) - '0';
                int tmp = (mul[t] + s + a*b)%10;
                s = (mul[t] + s + a*b) / 10;
                mul[t--] = tmp;
            }
           
            if(s!=0) mul[t--] = s;
            if(t+1 < min) min = t+1;
//            System.out.println(Arrays.toString(mul));
            k--;
        }
        
        //reverse
//        System.out.println(min);
        StringBuilder sb = new StringBuilder();
        for(int i = min; i<=R-1; i++)
        {
            sb.append(mul[i]);
        }
        return sb.toString();
    }