给定两个表示复数的字符串。
返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。
示例 1:
输入: "1+1i", "1+1i"
输出: "0+2i"
解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
示例 2:
输入: "1+-1i", "1+-1i"
输出: "0+-2i"
解释: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。
注意:
输入字符串不包含额外的空格。
输入字符串将以 a+bi 的形式给出,其中整数 a 和 b 的范围均在 [-100, 100] 之间。输出也应当符合这种形式。
C++
class Solution {
public:
string complexNumberMultiply(string a, string b)
{
int m=a.length();
int n=b.length();
int i=0;
int idx1;
int idx2;
while(i<m)
{
if('+'==a[i])
{
idx1=i;
break;
}
i++;
}
i=0;
while(i<n)
{
if('+'==b[i])
{
idx2=i;
break;
}
i++;
}
string a0=a.substr(0,idx1);
string a1=a.substr(idx1+1,m-idx1-1);
string b0=b.substr(0,idx2);
string b1=b.substr(idx2+1,n-idx2-1);
int A0,A1,B0,B1;
A0=atoi(a0.c_str());
A1=atoi(a1.c_str());
B0=atoi(b0.c_str());
B1=atoi(b1.c_str());
int res1=A0*B0-A1*B1;
int res2=A0*B1+A1*B0;
string res="";
res+=to_string(res1)+'+'+to_string(res2)+'i';
return res;
}
};
python
class Solution(object):
def complexNumberMultiply(self, a, b):
idx1=a.find('+')
idx2=b.find('+')
a0=int(a[0:idx1])
a1=int(a[idx1+1:-1])
b0=int(b[0:idx2])
b1=int(b[idx2+1:-1])
return str(a0*b0-a1*b1)+'+'+str(a0*b1+a1*b0)+'i'