假设我们有两个表示复数的字符串,我们必须解析它们并执行复数乘法,然后将结果作为字符串返回。
因此,如果输入像“ 1 + -1i”和“ 1 + -1i”,那么结果将是“ 0 + -2i”。
为了解决这个问题,我们将遵循以下步骤-
aa:=第一个复数的实数和虚数对
bb:=一对第二复数的实数和虚数
x:= aa.real * bb.real – aa.img * bb.img
y:= aa.real * bb.img + aa.img * bb.real
返回字符串“ x + yi”
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string complexNumberMultiply(string a, string b) {
pair <int, int> aa = parse(a);
pair <int, int> bb = parse(b);
int x = aa.first * bb.first - aa.second * bb.second;
int y = aa.first * bb.second + aa.second * bb.first;
return to_string(x) + "+" + to_string(y) + "i";
}
pair <int, int> parse(string s){
pair <int, int> ret;
int plus = find(s.begin(), s.end(), '+') - s.begin();
int i = find(s.begin(), s.end(), 'i') - s.begin();
ret.first = stoi(s.substr(0, plus));
ret.second = stoi(s.substr(plus + 1, i - plus));
return ret;
}
};
main(){
Solution ob;
cout << (ob.complexNumberMultiply("1+-1i", "1+-1i"));
}"1+-1i" "1+-1i"
输出结果
0+-2i