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.
输入两个复数(a+bi的形式),输出其乘积。
思路:根据加号确定实部和虚部的分界,利用int atoi(str.c_str()) 函数进行string到int的转换。
string complexNumberMultiply(string a, string b) {
int real[2],img[2],i,j;
string aR="",aI="",bR="",bI="",ans="";
for(i=1;i<a.size();i++)
{
if(a[i]=='+')
{
for(j=0;j<i;j++)
aR+=a[j];
break;
}
}
for(++i;i<a.size()-1;i++)
aI+=a[i];
real[0] = atoi(aR.c_str());
img[0] = atoi(aI.c_str());
for(i=1;i<b.size();i++)
{
if(b[i]=='+')
{
for(j=0;j<i;j++)
bR+=b[j];
break;
}
}
for(++i;i<b.size()-1;i++)
bI+=b[i];
real[1] = atoi(bR.c_str());
img[1] = atoi(bI.c_str());
return to_string(real[0]*real[1]-img[0]*img[1])+"+"+to_string(real[0]*img[1]+real[1]*img[0])+"i";
}