题目描述:
题解:
参考思路:
https://segmentfault.com/a/1190000023612393
(1)判断特殊情况,num1 num2有一个为0时,乘积为0 (2)将num1 num2中数位较少的记为nnum2,多的记为nnum1 (3)从nnum2的个位数字开始依次与nnum1相乘(注意处理最前进位),并填充0 (4)将以上结果相加,得到数字类型的结果result (5)将result从个位开始依次保存在数组arrres中 (6)将arrres每个数读取加入字符串strres作为最终结果 def multiply(self, num1, num2): if num1=="0" or num2=="0": return "0" len1 = len(num1) len2 = len(num2) minlen = min(len1,len2) maxlen = max(len1,len2) if minlen==len2: nnum2 = num2 nnum1 = num1 else: nnum2 = num1 nnum1 = num2 result = 0 flag = 0 weight = 1 weight2 = 1 for i in range(minlen-1,-1,-1): res = 0 weight = 1 for j in range(maxlen-1,-1,-1): a = int(nnum1[j]) b = int(nnum2[i]) tmp = int(a*b) if flag>0: tmp = int(tmp+flag) flag = 0 flag = int(tmp/10) tmp = int(tmp%10) res = int(res+tmp*weight) weight = weight*10 if flag>0: res=res+flag*weight flag = 0 res = int(res*weight2) weight2 = weight2*10 result = result+res arrres = [] while result>0: m = int(result%10) result = int(result/10) arrres.append(m) strres = "" for i in range(len(arrres)-1,-1,-1): strres = strres+str(arrres[i]) return strres