程式語言 - LeetCode - C - 43. Multiply Strings



題目:


解答:

char* multiply(char* num1, char* num2)
{
    int i = 0;
    int j = 0;
    int n1_size = strlen(num1);
    int n2_size = strlen(num2);
    char *t = calloc(n1_size + n2_size, sizeof(char));
    char *r = calloc(n1_size + n2_size + 1, sizeof(char));

    for (i = n1_size - 1; i >= 0; i--) {
        for (j = n2_size - 1; j >= 0; j--) {
            int m = (num1[i] - '0') * (num2[j] - '0');
            int sum = m + t[i + j + 1];

            t[i + j + 1] = sum % 10;
            t[i + j] += (sum / 10);
        }
    }

    j = 0;
    for (i = 0; i < (n1_size + n2_size); i++) {
        if (j || t[i]) {
            r[j++] = t[i] + '0';
        }
    }

    if (j == 0) {
        r[0] = '0';
    }

    return r;
}