其實看它配分就知道要解開這題,得分成兩個階段做:
(30 分): 運算式只包含數字、+和*
(70 分): 無其他限制
因此以下將分成兩步驟解題
只包含數字、+和* 30分的思路
雖然題目有規定+和*的優先規則,但其實可以發現因為只有 兩個運算子 需要考慮。
所以可以維護兩個變數,一個叫做prev、一個叫做now,分別代表之前 加總 的運算結果和現在處理中的運算結果。為了處理優先順序還需要建一個vector叫做res
然後遇到+就直接讓 now += prev,因為+的優先級最高;遇到*就把prev放到res裡面並將prev歸零,因為乘法左側的加總和右側的加總不能牽扯在一起。