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.
class Solution {
public String complexNumberMultiply(String a, String b) {
// parse the r and i
//
String delim = "[+]";
String[] tokensA = a.split(delim);
String[] tokensB = b.split(delim);
// get real part
//
int r1 = getInteger(tokensA[0]);
int r2 = getInteger(tokensB[0]);
// get imiminary part
//
int i1 = getInteger(tokensA[1].substring(0, tokensA[1].length() - 1));
int i2 = getInteger(tokensB[1].substring(0, tokensB[1].length() - 1));
// compose the result
//
int r3 = r1 * r2 - i1 * i2;
int i3 = r1 * i2 + r2 * i1;
return r3 + "+" + i3 + "i";
}
private int getInteger(String s) {
boolean isNeg = false;
int i = 0;
if (s.charAt(0) == '-') {
isNeg = true;
i++;
}
int result = 0;
while (i < s.length()) {
int digit = Character.getNumericValue(s.charAt(i));
result = result * 10 + digit;
i++;
}
if (isNeg) {
result = -result;
}
return result;
}
}
No comments:
Post a Comment