- 問題描述:
給定兩個表示複數的字元串。
傳回表示它們乘積的字元串。注意,根據定義 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();
}