Multiply Strings

来源:互联网 发布:vscode 字体颜色 编辑:程序博客网 时间:2024/05/17 01:10

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.

char* multiply(char* num1, char* num2) {

//获取字符串的长度int len1 = strlen(num1);int len2 = strlen(num2);//将字符串反转for (int i =0; i < len1/2; i++){    char temp = num1[i];    num1[i] = num1[len1-1-i];    num1[len1-1-i] = temp;}for (int i =0; i < len2/2; i++){    char temp = num2[i];    num2[i] = num2[len2-1-i];    num2[len2-1-i] = temp;}//申请整型数组int* num = (int*)malloc(sizeof(int)*(len1+len2));for (int i = 0; i < len1+len2; i++)    num[i] = 0;//计算整型数组的值for (int i = 0; i < len1; i++){    int temp1 = num1[i] - '0';    for (int j = 0; j < len2; j++)    {        int temp2 = num2[j] - '0';        num[i+j] += temp1*temp2;    }}//计算整型数组对应的值int flags = 0;for (int i = 0; i < len1+len2; i++){    int temp = num[i]+flags;    num[i] = temp%10;    flags = temp/10;}//计算乘积字符串的长度,应该考虑值为0的情况int len = len1+len2;while (num[len-1] == 0 && len > 1)    len--;//将整型数组的值赋到字符串char* str = (char*)malloc(sizeof(char)*(len+1));for(int i = 0; i < len+1; i++)    str[i] = num[len-1-i]+'0';str[len] = '\0';free(num);return str;

}

0 0
原创粉丝点击