LeetCode 複數乘法

2021-09-17 08:07:59 字數 2259 閱讀 3592

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

返回表示它們乘積的字串。注意,根據定義 i2 = -1 。

示例 1:

輸入: "1+1i", "1+1i"

輸出: "0+2i"

解釋: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要將它轉換為 0+2i 的形式。

示例 2:

輸入: "1+-1i", "1+-1i"

輸出: "0+-2i"

解釋: (1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i ,你需要將它轉換為 0+-2i 的形式。

注意:

輸入字串不包含額外的空格。

輸入字串將以 a+bi 的形式給出,其中整數 a 和 b 的範圍均在 [-100, 100] 之間。輸出也應當符合這種形式。

思路分析:這道題只要把a、b從輸入的字串中讀取出來就沒什麼問題了。

class

solution

while

(a[aindex]

!='+')if

(a[0]==

'-')

aindex +=1;

//跳過加號

//讀取b

bool flaga =

false;if

(a[aindex]

=='+'

|| a[aindex]

=='-'

) aindex +=1;

}while

(aindex < asize && a[aindex]

!='i')if

(flaga)

//第二步:讀取b串中的a、b

//讀取a

if(b[0]

=='+'

|| b[0]

=='-'

)while

(b[bindex]

!='+')if

(b[0]==

'-')

bindex +=1;

//跳過加號

//讀取b

bool flagb =

false;if

(b[bindex]

=='+'

|| b[bindex]

=='-'

) bindex +=1;

}while

(bindex < bsize && b[bindex]

!='i')if

(flagb)

//關於上面的讀取a、b操作,可以封裝乙個函式

//第三步:進行計算

string resa =

to_string

(aanum * banum - abnum * bbnum)

; string resb =

to_string

(aanum * bbnum + banum * abnum)

;return resa +

'+'+ resb +

'i';

//拼湊結果}}

下面是對上面的讀取複數中a、b封裝成函式進行優化。

class

solution

//讀取複數str中的係數a、b

void

strtotwonum

(string &str,

int&a,

int&b)

while

(str[index]

!='+')if

(str[0]

=='-'

) index +=1;

//跳過加號

//讀取b

bool flagb =

false;if

(str[index]

=='+'

|| str[index]

=='-'

) index +=1;

}while

(index < strsize && str[index]

!='i')if

(flagb)}}

;

Leetcode 537 複數乘法 C

給定兩個表示複數的字串。返回表示它們乘積的字串。注意,根據定義 i2 1 示例 1 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i 2i 你需要將它轉換為 0 2i 的形式。示例 2 輸入 1 1i 1 1i 輸出 0 2i 解釋 1 i 1 i 1 i2 2 i ...

1051 複數乘法

題目是pat乙級 思路 注意不要輸出 0,就可以了。其它要按照格式 訓練目的 輸出格式 題目描述 複數可以寫成 a bi 的常規形式,其中a是實部,b是虛部,i是虛數單位,滿足i2 1 也可以寫成極座標下的指數形式 r e pi 其中r是複數模,p是輻角,i是虛數單位,其等價於三角形式 r cos ...

1051 複數乘法

1051 複數乘法 15 分 複數可以寫成 a bi 的常規形式,其中 a 是實部,b 是虛部,i 是虛數單位,滿足 i 2 1 也可以寫成極座標下的指數形式 r e pi 其中 r 是複數模,p 是輻角,i 是虛數單位,其等價於三角形式 r cos p isin p 現給定兩個複數的 r 和 p,...