大数乘法

public static String mul(String str1, String str2)
    {
        int minLength = -1;
        int maxLength = -1;
        if (str1.length() > str2.length())
        {
            minLength = str2.length();
            maxLength = str1.length();
        }
        else
        {
            minLength = str1.length();
            maxLength = str2.length();
            String temp = str1;
            str1 = str2;
            str2 = temp;
        }
        int[] cc = new int[maxLength + minLength];
        int maxIndex = -1;
        for (int i = minLength - 1; i >= 0; i--)
        {
            char c2 = str2.charAt(i);
            int cIndex = minLength - 1 - i;
            int dx = 0;
            for (int j = maxLength - 1; j >= 0; j--)
            {
                cc[cIndex] = (str1.charAt(j) - '0') * (c2 - '0') + dx
                        + cc[cIndex];
                dx = cc[cIndex] / 10;
                cc[cIndex] = cc[cIndex] % 10;
                cIndex++;
            }
            if (maxIndex < cIndex)
            {
                maxIndex = cIndex;
            }
            cIndex = maxIndex;
            if (dx != 0)
            {
                while (dx != 0)
                {
                    cc[cIndex] = cc[cIndex] + dx;
                    dx = cc[cIndex] / 10;
                    cc[cIndex] = cc[cIndex] % 10;
                    cIndex++;
                }
                maxIndex = cIndex;
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = maxIndex - 1; i >= 0; i--)
        {
            if(cc[i]==0  && i==maxIndex-1)
            {
                return "0";
            }
            sb.append((char) (cc[i] + '0'));
        }
        return sb.toString();
    }
原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6329700.html