天天看點

【力扣】537. 複數乘法

  • 問題描述:

給定兩個表示複數的字元串。

傳回表示它們乘積的字元串。注意,根據定義 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();
	}