欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-04-29
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"

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。