537. 复数乘法
解题过程
INFO
题目链接 复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件: 实部 是一个整数,取值范围是 [-100, 100] 虚部 也是一个整数,取值范围是 [-100, 100] i2 == -1 给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串
javascript
/**
* @link https://leetcode.cn/problems/complex-number-multiplication/
* @title 537. 复数乘法
* @description 复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:
实部 是一个整数,取值范围是 [-100, 100]
虚部 也是一个整数,取值范围是 [-100, 100]
i2 == -1
给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串
* @param {string} num1
* @param {string} num2
* @return {string}
*/
// 解法一
// 思路:本办法,直接拆开两个字符串为数组,然后分别计算对应的实部和虚部值即可
var complexNumberMultiply = function(num1, num2) {
const complex1Arr = num1.split('+')
const complex2Arr = num2.split('+')
const i2 = parseInt(complex2Arr[1].split('i')[0]) * parseInt(complex1Arr[1].split('i')[0]) * (-1)
const num = parseInt(complex1Arr[0]) * parseInt(complex2Arr[0]) + i2
const iValue = parseInt(complex1Arr[0]) * parseInt(complex2Arr[1].split('i')[0]) + parseInt(complex2Arr[0]) * parseInt(complex1Arr[1].split('i')[0])
return num + '+' + iValue + 'i'
}
// 解法二
// 思路:正则表达式匹配对应数字字符串的实部和虚部数字,然后对应相乘即可
// 优点:比解法一更简单和执行效果更好
var complexNumberMultiply = function(num1, num2) {
const [a1, a2] = num1.match(/\d+|-\d+/g)
const [b1, b2] = num2.match(/\d+|-\d+/g)
const num = parseInt(a1) * parseInt(b1) - parseInt(a2) * parseInt(b2)
const iNum = parseInt(a1) * parseInt(b2) + parseInt(b1) * parseInt(a2)
return num + '+' + iNum + 'i'
}
// const result = complexNumberMultiply('1+1i', '1+1i') // 0+2i
// const result = complexNumberMultiply('1+-1i', '1+-1i') // 0+-2i
// const result = complexNumberMultiply('1+0i', '1+0i') // 1+0i
const result = complexNumberMultiply('78+-76i', '-86+72i') // "-1236+12152i"
console.log(result)
解题感受
解题思路都差不多,没有什么特别的。也搞不懂这题难度在哪里,为啥是中等类型。基本就是硬解即可,优化一点的话,用正则表达式会好很多,思路也比较清晰简单
优质题解
- https://leetcode.cn/problems/complex-number-multiplication/solution/fu-shu-cheng-fa-by-leetcode-solution-163i/
- https://leetcode.cn/problems/complex-number-multiplication/solution/fu-xue-ming-zhu-yu-zhong-bu-tong-de-jie-41vri/
- https://leetcode.cn/problems/complex-number-multiplication/solution/javascriptban-jie-ti-si-lu-by-ityou-o-ewcv/