A complex number can be represented as (a + bi). Multiplying two complex numbers (a + bi) and (c + di) gives (ac - bd) + (ad + bc)i. We parse the input strings to extract real and imaginary parts, then apply the formula.
classSolution {
public: std::string complexNumberMultiply(std::string num1, std::string num2) {
auto parse = [](const std::string& s) {
int plus = s.find('+');
int a = std::stoi(s.substr(0, plus));
int b = std::stoi(s.substr(plus +1, s.size() - plus -2));
return std::make_pair(a, b);
};
auto [a, b] = parse(num1);
auto [c, d] = parse(num2);
int real = a * c - b * d;
int imag = a * d + b * c;
return std::to_string(real) +"+"+ std::to_string(imag) +"i";
}
};
classSolution {
public String complexNumberMultiply(String num1, String num2) {
int[] n1 = parse(num1), n2 = parse(num2);
int real = n1[0]* n2[0]- n1[1]* n2[1];
int imag = n1[0]* n2[1]+ n1[1]* n2[0];
return real +"+"+ imag +"i";
}
privateint[]parse(String s) {
String[] parts = s.split("\\+");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1].substring(0, parts[1].length() - 1));
returnnewint[]{a, b};
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
classSolution {
funcomplexNumberMultiply(num1: String, num2: String): String {
funparse(s: String): Pair<Int, Int> {
val(a, b) = s.split("+")
return Pair(a.toInt(), b.dropLast(1).toInt())
}
val(a, b) = parse(num1)
val(c, d) = parse(num2)
val real = a * c - b * d
val imag = a * d + b * c
return"${real}+${imag}i" }
}
1
2
3
4
5
6
7
8
9
defcomplex_number_multiply(num1: str, num2: str) -> str:
defparse(s: str) -> tuple[int, int]:
a, b = s[:-1].split('+')
return int(a), int(b)
a, b = parse(num1)
c, d = parse(num2)
real = a * c - b * d
imag = a * d + b * c
returnf"{real}+{imag}i"
1
2
3
4
5
6
7
8
9
10
11
12
13
impl Solution {
pubfncomplex_number_multiply(num1: String, num2: String) -> String {
fnparse(s: &str) -> (i32, i32) {
let parts: Vec<&str>= s[..s.len()-1].split('+').collect();
(parts[0].parse().unwrap(), parts[1].parse().unwrap())
}
let (a, b) = parse(&num1);
let (c, d) = parse(&num2);
let real = a * c - b * d;
let imag = a * d + b * c;
format!("{}+{}i", real, imag)
}
}