227 基本計算器 II

2021-10-21 18:26:40 字數 1286 閱讀 7983

給你乙個字串表示式 s ,請你實現乙個基本計算器來計算並返回它的值。

整數除法僅保留整數部分。

示例 1:

輸入:s = 「3+2*2」

輸出:7

示例 2:

輸入:s = " 3/2 "

輸出:1

示例 3:

輸入:s = " 3+5 / 2 "

輸出:5

昨天的題有括號懶得寫字尾表示式,今天沒有括號啦,那就用把中綴轉成字尾算好了~

首先建立乙個符號堆疊 st ,建立乙個整型佇列 q 存放字尾表示式。

掃瞄原字串,碰到數字就放到入隊,碰到符號就放到符號棧。

如果符號棧當前入棧元素 >= 棧頂元素的優先順序,那麼就將棧頂符號依次出棧,並放到表示式佇列裡。

最後根據佇列計算表示式的值,如果是數就扔到堆疊中,如果是符號就從堆疊中取兩個數出來運算一下,再把結果扔到堆疊中,最後堆疊中剩的元素就是結果~

ps:官方題解好像又偷懶了,官方題解的思路是,先計算出乘除的結果,再計算加減的結果,確實是簡單一些的。

附上官方題解傳送門:我是官方題解~

class

solution

else

if(s.

charat

(i)==

'-')

else

if(s.

charat

(i)==

'*')

else

if(s.

charat

(i)==

'/')

//否則是數字

else

}//符號入棧

if(nowsign !=0)

st.push

(nowsign);}

//數入隊

if(nownum !=-1

)}//把st清空

while

(!st.

empty()

)//中綴表示式算結果

int result =0;

while

(!q.

isempty()

)//符號

else

else

if(q.

peek()

==-5)

else

if(q.

peek()

==-2)

else

q.poll()

;}}//返回最終結果

return st.

pop();

}}

227 基本計算器 II

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格。整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7示例 2 輸入 3 2 輸出 1示例 3 輸入 3 5 2 輸出 5說明 思路 我們用乙個棧來儲存數字,同時記錄數字之前出現的符號,該符號初始化...

227 基本計算器 II

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7 示例 2 輸入 3 2 輸出 1 示例 3 輸入 3 5 2 輸出 5 說明 你可以假設所給定的表示式都是有效的。請不要使用內建的庫函式 ev...

227 基本計算器 II

給你乙個字串表示式 s 請你實現乙個基本計算器來計算並返回它的值。整數除法僅保留整數部分。輸入 s 3 2 2 輸出 7輸入 s 3 2 輸出 1輸入 s 3 5 2 輸出 5棧,字串 利用正規表示式,首先對字串s利用正規表示式根據 乘,分開,然後 將字串s中的 乘,按順序取出,存放到另外乙個陣列,...