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