Complex Number Multiplication
Problem
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.
Note:
- The input strings will not have extra blank.
- The input strings will be given in the form of a+bi, where the integer a and b will both belong to the range of [-100, 100]. And the output should be also in this form.
Solution
Stream and Imitation: O(1) time
public class Solution {
public String complexNumberMultiply(String a, String b) {
int[] setA = Stream.of(a.split("\\+|i")).mapToInt(Integer::parseInt).toArray();
int[] setB = Stream.of(b.split("\\+|i")).mapToInt(Integer::parseInt).toArray();
//Need to add parenthesis between numbers to get computed value instead of literally adding value
return setA[0] * setB[0] - setA[1] * setB[1] + "+" + setA[0] * setB[1] + setA[1] * setB[0] + "i";
}
}
Analysis
In this solution, we just imitate the computation
To do that, we first need to get number of parameters
We use Stream.of(split()).mapToInt().toArray()
to get an array of int
Then we simply calculate based on the multiplication rule and return the final result in correct format