class Solution {
public:
string complexNumberMultiply(string num1, string num2) {
}
};
537. 复数乘法
复数 可以用字符串表示,遵循 "实部+虚部i"
的形式,并满足下述条件:
实部
是一个整数,取值范围是 [-100, 100]
虚部
也是一个整数,取值范围是 [-100, 100]
i2 == -1
给你两个字符串表示的复数 num1
和 num2
,请你遵循复数表示形式,返回表示它们乘积的字符串。
示例 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 的形式。
提示:
num1
和 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'