Skip to content

Latest commit

 

History

History

537

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

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:

  1. The input strings will not have extra blank.
  2. 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 1.

// OJ: https://leetcode.com/problems/complex-number-multiplication/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(N)
class Solution {
private:
    vector<int> parse(string &s) {
        vector<int> ans(2, 0);
        ans[0] = stoi(s);
        int i = s.find_first_of("+");
        ans[1] = stoi(s.substr(i + 1));
        return ans;
    }
public:
    string complexNumberMultiply(string a, string b) {
        auto m = parse(a), n = parse(b);
        int x = m[0] * n[0] - m[1] * n[1], y = m[1] * n[0] + m[0] * n[1];
        return to_string(x) + "+" + to_string(y) + "i";
    }
};