栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

537. 复数乘法 【每日一题】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

537. 复数乘法 【每日一题】

537. 复数乘法 思路

        这是一道披着中等难度外衣的简单题,直接模拟就完事,两个复数相乘,实部*实部-虚部*虚部=结果的实部,实部*虚部+实部*虚部=结果的虚部,唯一需要注意的点就是怎么获得实部和虚部,并将其转换为实数

代码 方法1

        利用字符串分割和切片的手段来确定实部和虚部

class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        num_list1 = num1.split("+")
        num_list2 = num2.split("+")

        real = int(num_list1[0])*int(num_list2[0])-int(num_list1[1][0:-1])*int(num_list2[1][0:-1])
        imaginary = int(num_list1[0])*int(num_list2[1][0:-1])+int(num_list1[1][0:-1])*int(num_list2[0])

        return str(real)+"+"+str(imaginary)+"i"
方法2

        利用正则来确定实部和虚部

class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        num_list1 = re.findall(r"(.*?)[+i]",num1)
        num_list2 = re.findall(r"(.*?)[+i]",num2)

        real = int(num_list1[0])*int(num_list2[0])-int(num_list1[1])*int(num_list2[1])
        imaginary = int(num_list1[0])*int(num_list2[1])+int(num_list1[1])*int(num_list2[0])

        return str(real)+"+"+str(imaginary)+"i"
方法3

        利用正则来确定实部和虚部,同时直接用map吧字符都转成 int ,避免后面每一个都要转换,代码荣誉不美观

class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        num_list1 = list(map(int,re.findall(r"(.*?)[+i]",num1)))
        num_list2 = list(map(int,re.findall(r"(.*?)[+i]",num2)))

        real = num_list1[0]*num_list2[0]-num_list1[1]*num_list2[1]
        imaginary = num_list1[0]*num_list2[1]+num_list1[1]*num_list2[0]

        return str(real)+"+"+str(imaginary)+"i"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号