复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:
实部 是一个整数,取值范围是 [-100, 100]
虚部 也是一个整数,取值范围是 [-100, 100]
i2 == -1
给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。
个人题解:分别读出两个数的实数与虚数部分
class Solution {
private:
int turn_to_num(string s,int i,int j){//将字符串中一段转为数
if(s[i]=='-'){
i++;
int num=0,mul=1;
while(j>=i){
int q = s[j]-'0';
num+=mul*q;
mul*=10;
j--;
}
// cout<<-num<<endl;
return -num;
}
else{
int num=0,mul=1;
while(j>=i){
int q = s[j] - '0';
num+=mul*q;
mul*=10;
j--;
}
// cout<<num<<endl;
return num;
}
}
public:
string complexNumberMultiply(string num1, string num2) {
string s;
int j=0;
while(num1[j] != '+')j++;
int real_num1 = turn_to_num (num1, 0, j-1);//实数部分1
int r=j;
while(num1[r] != 'i') r++;
// cout<<j<<' '<<r;
int img_num1 =turn_to_num (num1, j+1, r-1);//虚数系数1
j=0;
while(num2[j] != '+')j++;
int real_num2 = turn_to_num (num2, 0, j-1);//实数部分1
r=j;
while(num2[r] != 'i') r++;
int img_num2 =turn_to_num (num2, j+1, r-1);//虚数系数1
s=to_string(real_num1*real_num2-img_num1*img_num2)+"+"+to_string(real_num1*img_num2+real_num2*img_num1)+"i";
return s;
}
};
拓展:正则regex库