leetcode练习(43)

题43

题目要求实现一个矩阵乘法,用python实现出现的问题是将str转为int时,例如num=’98’,直接用int(),会出错,它会转变为‘9’和‘8’。
解决方法是在‘98’外加上[]。
代码如下:

class Solution:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        numa = [[num1]]
        numb = [[num2]]
        M1=len(numa) # nums1的行数
        N1=len(numa[0]) #nums1的列数
        M2=len(numb) # nums2的行数
        N2=len(numb[0]) # nums2的列数

        res = [[0 for i in range(M1)]for j in range(N2)]
        if N1!=M2:
            return "Error"
        else:
            for i in range(M1):     # nums1的第i行
                for j in range(N2): # nums2的第j列
                    tmp=0
                    for r in range(N1):
                         tmp += int(numa[i][r])*int(numb[r][j])  # res的第i行第j列的结果
                    res[i][j]=str(tmp)
        if len(res)==1 and len(res[0])==1:
            return res[0][0]
        else:
            return res

s=Solution()
nums1='98'
nums2='9'
print(s.multiply(nums1,nums2))

结果如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值