我正在尝试使用leetcode中的一个关于复数乘法的问题。
但是,我在使用stoi()
时遇到问题。该代码适用于正复数,但在给定输入时显示错误,例如:
输入:“-1 + -1i”,“ 1 + -1i”
class Solution {
public:
string complexNumberMultiply(string a, string b) {
int aplus = a.find('+');
int bplus = b.find('+');
int ai = a.find('i');
int bi = b.find('i');
int a1 = stoi(a.substr(0, aplus));
int b1 = stoi(a.substr(aplus + 1, ai), nullptr);
int a2 = stoi(a.substr(0, bplus), nullptr);
int b2 = stoi(a.substr(bplus + 1, bi), nullptr);
int aa = a1 * a2 - (b1 * b2);
int ab = a1 * b2 + a2 * b1;
string res = to_string(aa) + "+" + to_string(ab) + "i";
return res;
}
};
如何解决此错误?
答案 0 :(得分:0)
问题是您犯了一个错误。
对于a2
和b2
,您使用a.substr()
而不是b.substr()
。
我用您的示例进行了测试,结果返回-2 + 0i。