- 问题描述:
给定两个表示复数的字符串。
返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。
- 注意:
输入字符串不包含额外的空格。
输入字符串将以 a+bi 的形式给出,其中整数 a 和 b 的范围均在 [-100, 100] 之间。输出也应当符合这种形式。
- 示例:
输入: "1+-1i", "1+-1i"
输出: "0+-2i"
解释: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要将它转换为 0+-2i 的形式。
- 解读:
一、复数的模拟,写个复数类,方便以后使用。这里只要解决复数的a、b二个值就可以了。
二、从字段串获取值,这里的字段串属于规定的格式,处理起来不用考虑太多。直接先按+拆分,再用库函数,直接转化字段串成数字就可以。
- 代码:
class Complex {
int a;
int b;
public Complex multiply(Complex complex) {
Complex cx = new Complex();
cx.a = a * complex.a - b * complex.b;
cx.b = a * complex.b + complex.a * b;
return cx;
}
public String toString() {
return String.format("%d+%di", a, b);
}
}
public Complex createComplex(String str) {
String[] sa = str.split("[\\+i]");
Complex cx = new Complex();
cx.a = Integer.valueOf(sa[0]);
cx.b = Integer.valueOf(sa[1]);
return cx;
}
public String complexNumberMultiply(String a, String b) {
Complex ca = createComplex(a);
Complex cb = createComplex(b);
return ca.multiply(cb).toString();
}