給定兩個表示複數的字串。
返回表示它們乘積的字串。注意,根據定義 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,...