题目描述
给定两个表示复数的字符串。
返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。
示例 1:
输入: "1+1i", "1+1i"
输出: "0+2i"
解释: (1 + i) _ (1 + i) = 1 + i2 + 2 _ i = 2i ,你需要将它转换为 0+2i 的形式。
示例 2:
输入: "1+-1i", "1+-1i"
输出: "0+-2i"
解释: (1 - i) _ (1 - i) = 1 + i2 - 2 _ i = -2i ,你需要将它转换为 0+-2i 的形式。
注意:
- 输入字符串不包含额外的空格。
- 输入字符串将以 a+bi 的形式给出,其中整数 a 和 b 的范围均在 [-100, 100] 之间。输出也应当符合这种形式。
来源:LeetCode
思路
将字符串解析成实数和虚数部分,然后按照数学意义计算结果,再按照复数形式组织。
解法
const parse = string => string.split('+').map(i => parseInt(i, 10));
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
const complexNumberMultiply = (a, b) => {
const complexA = parse(a);
const complexB = parse(b);
const real = complexA[0] * complexB[0] - complexA[1] * complexB[1];
const virtual = complexA[0] * complexB[1] + complexA[1] * complexB[0];
return `${real}+${virtual}i`;
};