lintcode370 將表示式轉換為逆波蘭表示式

2021-08-20 01:30:51 字數 742 閱讀 7997

題目描述:

將表示式處理成逆波蘭表示式,主要處理的就是優先順序問題,將括號去掉,用操作符的先後順序表示運算順序。

逆波蘭表示式中運算元的順序和原表示式中運算元的順序是一樣的,也就是說在原表示式遍歷過程中,如果判斷是運算元,直接放入結果中。重點是操作符的放入順序,這個是決定運算順序的關鍵。

操作符一共有 ( + - * / ) 六種, 遍歷到的操作符和當前棧頂操作符進行比較。當遍歷到的操作符比棧頂的操作符優先順序低或者相同時,彈棧; 當前操作符比棧頂的操作符優先順序高時,當前操作符入棧。

i  遍歷到 (, 直接入棧

ii 遍歷到 + -, 彈棧,加入到結果中,直到遇到 (,將當前操作符壓入棧中.

iii 遍歷到 * /,如果棧頂是 * 或者 / , 彈棧,加入到結果,直到棧頂不是這兩個操作符,將當前操作符壓入棧中.

iv 遍歷到 ), 彈棧,加入結果,直到遇到 ( , 然後把(彈出,不加入結果中。

原表示式遍歷結束,將棧中的所有操作符依次彈出,加入到結果中,即為最終結果。

**:

vectorconverttorpn(vector&expression) {

// write your code here

vectorres;

stacks;

for(int i=0; i

表示式求值 LintCode

給乙個用字串表示的表示式陣列,求出這個表示式的值。示例 對於表示式 2 6 23 7 1 2 對應的陣列為 2 6 23 7 1 2 其值為 2 思想 還是先構造字尾表示式,再利用字尾表示式進行求值。ifndef c368 h define c368 h include include includ...

LINTCODE 表示式求值

lintcode 表示式求值 前期準備 首先我們得要了解字首 中綴 字尾表示式分別是什麼,然後計算方法是什麼 舉例 3 4 5 6 就是中綴表示式 3 4 5 6 字首表示式 3 4 5 6 字尾表示式 說簡單點就是運算子的位置,在前的話就是字首,以此類推 詳細了解 對於計算機來說,中綴表示式是相當...

Lintcode 逆波蘭表示式求值

求逆波蘭表示式的值。在逆波蘭表達法中,其有效的運算符號包括 每個運算物件可以是整數,也可以是另乙個逆波蘭計數表達。您在真實的面試中是否遇到過這個題?yes 樣例 2 1 3 2 1 3 9 4 13 5 4 13 5 6 標籤 領英棧 class solution sum convert s.top...