「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」。
复数 可以用字符串表示,遵循 "**实部**+**虚部**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都是有效的复数表示。
模拟
复数可以写成 的形式,其中 ,a 是实部,b 是虚部, 是虚数单位,。
对于给定的两个复数 和 ,首先分别得到两个复数的实部和虚部,然后计算两个复数的乘法。用 和 分别表示 的实部和虚部,用 和 分别表示 的实部和虚部,则两个复数的乘法计算如下:
得到两个复数的乘积之后,将乘积转换成复数格式的字符串并返回。
var complexNumberMultiply = function(num1, num2) {
const complex1 = [num1.split("+")[0], num1.split("+")[1].split("i")[0]];
const complex2 = [num2.split("+")[0], num2.split("+")[1].split("i")[0]];
const real1 = parseInt(complex1[0]);
const imag1 = parseInt(complex1[1]);
const real2 = parseInt(complex2[0]);
const imag2 = parseInt(complex2[1]);
return '' + real1 * real2 - imag1 * imag2 + '+' + (real1 * imag2 + imag1 * real2) + 'i';
};
复杂度分析
- 时间复杂度:O(1)。由于两个复数字符串的长度都很小,因此可以将字符串处理的时间视为常数。
- 空间复杂度:O(1)。