列表

详情


537. 复数乘法

复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:

给你两个字符串表示的复数 num1num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。

 

示例 1:

输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。

示例 2:

输入:num1 = "1+-1i", num2 = "1+-1i"
输出:"0+-2i"
解释:(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。 

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string complexNumberMultiply(string num1, string num2) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2022-11-16 12:00:50

func parseComplexNumber(num string) (real, imag int) {
    i := strings.IndexByte(num, '+')
    real, _ = strconv.Atoi(num[:i])
    imag, _ = strconv.Atoi(num[i+1 : len(num)-1])
    return
}

func complexNumberMultiply(num1, num2 string) string {
    real1, imag1 := parseComplexNumber(num1)
    real2, imag2 := parseComplexNumber(num2)
    return fmt.Sprintf("%d+%di", real1*real2-imag1*imag2, real1*imag2+imag1*real2)
}

python3 解法, 执行用时: 40 ms, 内存消耗: 14.8 MB, 提交时间: 2022-11-16 12:00:29

class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        real1, imag1 = map(int, num1[:-1].split('+'))
        real2, imag2 = map(int, num2[:-1].split('+'))
        return f'{real1 * real2 - imag1 * imag2}+{real1 * imag2 + imag1 * real2}i'

python3 解法, 执行用时: 36 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-16 11:58:19

class Solution:
    def complexNumberMultiply(self, num1: str, num2: str) -> str:
        r1, v1 = num1.split('+')
        r2, v2 = num2.split('+')
        r3 = int(r1) * int(r2) - int(v1[:-1]) * int(v2[:-1])
        v3 = int(r1) * int(v2[:-1]) + int(r2) * int(v1[:-1])
        return f'{r3}+{v3}i'

上一题