波蘭逆波蘭表示式

2021-10-22 18:37:10 字數 1333 閱讀 6667

實現乙個基本的計算器來計算簡單的表示式字串。

表示式字串只包含非負整數,算符 +、-、*、/ ,左括號 ( 和右括號 ) 。整數除法需要 向下截斷 。

你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 [-231, 231 - 1] 。

class

solution

s2.push

(s.substr

(l, r - l));

l = r;

}//碰見符號

else

//+-號是運算級最低的,嚴格單調遞增

else

if(s[l]

=='+'

|| s[l]

=='-'

)//最後將當前符號丟入s1

s1.push

(s[l]);

}//*/是運算級最高的

else

if(s[l]

=='*'

|| s[l]

=='/'

)

s1.push

(s[l]);

}//碰見右括號

else

if(s[l]

==')'

)//丟棄該左括號if(

!s1.

empty()

&& s1.

top()==

'(')

} l++;}

}//遍歷完了如果s1還有符號,全部丟入s2

while

(!s1.

empty()

)//此時s2從棧低到棧頂就是逆波蘭表示式

//轉換為vec準備求值

vector vec;

while

(!s2.

empty()

)//逆波蘭表示式求值

//建立乙個棧

stack<

int> stk;

//遍歷逆波蘭表示式

//由於從棧逐一彈出,所以逆序遍歷vec才是逆波蘭表示式

for(

int i = vec.

size()

-1; i >=

0; i--

)//碰見符號,出兩個棧的數,注意順序,後出棧的數是第一運算元,計算完畢再入棧

else

else

if(vec[i]

=="-"

)else

if(vec[i]

=="*"

)else}}

return stk.

top();

}};

波蘭表示式 逆波蘭表示式

中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...

波蘭表示式與逆波蘭表示式

2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...

波蘭表示式和逆波蘭表示式

題目 根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴算術表示式為 2 1 3 9 示例 2 輸入 4 13 5 輸出 6 解釋 該算式轉化為常見的中綴算術表示式為 4 13...