1. 程式人生 > 其它 >力扣537(java)-複數乘法(中等)

力扣537(java)-複數乘法(中等)

題目:

複數 可以用字串表示,遵循 "實部+虛部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 都是有效的複數表示。

來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/complex-number-multiplication
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解題思路:

模擬一下複數相乘的過程,再進行組合:

( a + b i) * ( c + d i) = a*c + a *di +b * ci + bi * d i = (a*c - b*d) + (a*d + b * c) i

 程式碼:

小知識:

1.java中split函式引數特殊字元的處理(轉義),如 "." 、"\"、"|" 、"$" 、"*" 、"+"


 split() 方法根據匹配給定的正則表示式來拆分字串,多個分隔符,可以用 | 作為連字元,使用 \進行轉義,因為\本身就是一個正則表示式的字元,所以還需要加一個 \ ,即每次用兩個 \ (\\)

num1.split("\\+|i")
含義:使用 + 或者 i 作為分割符進行分割

2.Integer.parseInt() 是Integer包裝類下的一個方法,作用是將()內的String型別字串轉化為int型別

String str = "1234";
int x = Integer.parseInt(str);  //x的值為1234