題目描述:
將表示式處理成逆波蘭表示式,主要處理的就是優先順序問題,將括號去掉,用操作符的先後順序表示運算順序。
逆波蘭表示式中運算元的順序和原表示式中運算元的順序是一樣的,也就是說在原表示式遍歷過程中,如果判斷是運算元,直接放入結果中。重點是操作符的放入順序,這個是決定運算順序的關鍵。
操作符一共有 ( + - * / ) 六種, 遍歷到的操作符和當前棧頂操作符進行比較。當遍歷到的操作符比棧頂的操作符優先順序低或者相同時,彈棧; 當前操作符比棧頂的操作符優先順序高時,當前操作符入棧。
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...