以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。
数据范围: 读入的数字大小满足
要求:空间复杂度 ,时间复杂度 (假设m是n的长度)
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */ char* solve(char* s, char* t ) { int slen = strlen(s); int tlen = strlen(t); int rlen = slen + tlen; char *r = (char *)malloc(slen + tlen + 1); int i, j; char sbit, tbit, carry, rbit; memset(r, '0', rlen); r[rlen] = '\0'; /* 执行乘法运算 * 123 (t) *x 456 (s) *------- * 518 (r) */ for (i = 0; i < slen; i++) { sbit = s[slen - i - 1]; carry = 0; for (j = 0; j < tlen; j++) { tbit = t[tlen - j - 1]; rbit = r[rlen - j - i - 1]; carry = (rbit - '0') + carry + (sbit - '0') * (tbit - '0'); r[rlen - j - i - 1] = (carry % 10) + '0'; carry /= 10; } r[rlen - tlen - i - 1] += carry; } if (carry == 0) { return &r[1]; } return r; }