前往
大廳
主題

LeetCode - 537. Complex Number Multiplication 解題心得

Not In My Back Yard | 2021-08-15 00:00:02 | 巴幣 0 | 人氣 225

題目連結:


題目意譯:
一個複數可以表為一字串格式為 "real+imaginaryi" ,其中:
real 為實部且為一整數介於範圍 [-100,100] 中。
imaginary 為虛部且為一整數介於範圍 [-100,100] 中。
i ^ 2 == -1。

給定以字串表示的兩個複數 num1 和 num2 ,回傳一字串形式之複數其為兩者之乘積。

限制:
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 之字串拆成兩個複數各自的實部和虛部。假設 num1 為 a + bi 、 num2 為 c + di,則兩者的乘積即為
(ac - bd) + (ad + bc)i
然後將上式的結果之實部、虛部轉成題目的格式即是所求。



不過 C++ 自己就有 <complex> 標頭檔,複數的加減乘法其實不用自己寫。當然,題目的格式還是得自己轉的。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作