复数 可以用字符串表示,遵循 “实部+虚部i” 的形式,并满足下述条件:
- 实部 是一个整数,取值范围是 [-100, 100]
- 虚部 也是一个整数,取值范围是 [-100, 100]
- i2 == -1
给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。
示例 1:
输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。
class Solution {
public String complexNumberMultiply(String num1, String num2) {
//分割字符串的实部和虚部
String[] strs1 = num1.split("\\+");
String[] strs2 = num2.split("\\+");
int a = Integer.valueOf(strs1[0].toString()).intValue();
int b = getNumFromString(strs1[1]);
int m = Integer.valueOf(strs2[0].toString()).intValue();
int n = getNumFromString(strs2[1]);
int leftPart = a*m + b*n*-1;
int rightPart = a*n+b*m;
return leftPart + "+" + rightPart+"i";
}
public int getNumFromString(String numStr){
StringBuilder sb = new StringBuilder();
int flag=1;
for(int i=0;i<numStr.length();i++){
if(numStr.charAt(i)=='-'){
flag=-1;
}else if(numStr.charAt(i)>='0' && numStr.charAt(i)<='9'){
sb.append(numStr.charAt(i));
}
}
return Integer.valueOf(sb.toString()).intValue()*flag;
}
}