LeetCode – 537. Complex Number Multiplication

題目來源:LeetCode – 537. Complex Number Multiplication


題目:

Given two strings representing two complex numbers.

You need to return a string representing their multiplication. Note i2 = -1 according to the definition.

Example 1:

Input: “1+1i”, “1+1i”
Output: “0+2i”
Explanation: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i, and you need convert it to the form of 0+2i.

Example 2:

Input: “1+-1i”, “1+-1i”
Output: “0+-2i”
Explanation: (1 – i) * (1 – i) = 1 + i2 – 2 * i = -2i, and you need convert it to the form of 0+-2i.

粗略翻譯:

題目會給予兩組複數字串,我們須返回複數字串的相乘結果,其中i2代表-1。

例如題目輸入:”1+-1i”, “1+-1i”

根據複數的乘法公式,我們將輸出:”0+-2i”

 

解法:

利用String中split方法的正規表示法(regular expression),將a跟b字串中的”+”跟”i”拆開來

例如字串假設是”1+-2i”,利用正規表示法”\\+|i”後,則會被拆成”1″跟”-2″兩組字串

再依據乘法公式算出答案後再重組回String即可。

 

由於String中的split是正規表示法,因此效能上會比較慢,如要改善執行速度

可以從切割字串的部分著手。

例如使用StringTokenizer來切割也是一種選擇

 


網站:http://wp.mlab.tw/
GitHub:https://github.com/yoll522/LeetCode
程式碼:https://github.com/yoll522/LeetCode/tree/master/537.%20Complex%20Number%20Multiplication

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *