LeetCode刷题实战(43):Multiply Strings

题目描述:

43 Multiply Strings 28.7% Medium

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = "2", num2 = "3"
Output: "6"

Example 2:

Input: num1 = "123", num2 = "456"
Output: "56088"

Note:

  1. The length of both num1 and num2 is < 110.
  2. Both num1 and num2 contain only digits 0-9.
  3. Both num1 and num2 do not contain any leading zero, except the number 0 itself.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

C语言解法:


char* multiply(char* num1, char* num2){
    if(*num1=='0' || *num2=='0')
        return "0";
    
    int len_num1 = strlen(num1);
    int len_num2 = strlen(num2);
    int len = len_num1 + len_num2;
    int *arr = (int*)malloc(sizeof(int)*len); //存储计算结果;
    
    memset(arr, 0, sizeof(int)*len); //重要;
    
    for(int i=len_num1-1; i > -1; i--)
        for(int j=len_num2-1; j > -1; j--)
            arr[i+j+1] += (num1[i]-'0')*(num2[j]-'0'); //计算每一位结果;
    for(int i=len-1; i > 0; i--) {
        arr[i-1] += arr[i]/10;
        arr[i] %= 10;
    }
    char *s = (char*)malloc(sizeof(char)*(len+1)); //数字转换为字符串;
    int index = 0;
    int i = 0;
    if(arr[i]==0) i++;
    while(i < len)
        s[index++] = arr[i++]+'0';
    s[index] = '\0';
    return s;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/cg129054036/article/details/82808086
今日推荐