根據逆波蘭表示法,求表示式的值。
有效的運算子包括+
,-
,*
,/
。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。
說明:示例 1:
輸入: ["2", "1", "+", "3", "*"]示例 2:輸出: 9
解釋: ((2 + 1) * 3) = 9
輸入: ["4", "13", "5", "/", "+"]示例 3:輸出: 6
解釋: (4 + (13 / 5)) = 6
輸入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]輸出: 22
解釋:
((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
//章節 - 佇列和棧
//三、棧:先入後出的資料結構
//4.逆波蘭表示式求值
/*演算法思想:
棧的應用,從前往後遍歷陣列,遇到數字則壓入棧中,遇到符號,則把棧頂的兩個數字拿出來運算,把結果再壓入棧中,直到遍歷完整個陣列,棧頂數字即為最終答案。
會用到乙個函式:stoi(字串,起始位置,2~32進製),stoi()是string庫中的函式。功能是將n進製的字串轉化為十進位制。
*///
演算法實現:
class
solution
else
}return
st.top();
}};/*
補充:#include#include#includeusing namespace std;
int main()
輸出:10
將二進位制的1010轉化為十進位制。
*/
LeetCode 150 逆波蘭表示式
根據 逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴算術表示式為...
leetcode 150 逆波蘭表示式求值
根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9示例 2 輸入 4 13 5 輸出 6 解釋 4 13 5 6從前往後遍歷陣列,遇到數字則壓入棧中,遇到符號,則把棧頂的兩個數字拿出來...
LeetCode 150 逆波蘭表示式求值
根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9 示例 2 輸入 4 ...