根據逆波蘭表示法,求表示式的值。
有效的運算子包括+
,-
,*
,/
。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。
說明:示例 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
逆波蘭表示式是一種字尾表示式,所謂字尾就是指算符寫在後面。
逆波蘭表示式主要有以下兩個優點:
cpp
classsolution
int evalrpn(vector&tokens)
else
else
if(tokens[i]=="/"
)
else
if(tokens[i]=="+"
)
else
if(tokens[i]=="-"
) }
}return
std::stoi(nums.top());
}};
js
/** * @param tokens
* @return */
var evalrpn = function
(tokens)
else
else
if(token==="/")else
if(token==="+")
else
if(token==="-")}}
return
stack.pop();
};
py
classsolution:
def evalrpn(self, tokens: list[str]) ->int:
s=for t in
tokens:
if t.isnumeric() or t[0]=='-'
and t[1:].isnumeric():
else
: a=int(s.pop())
b=int(s.pop())
if t=="*"
:
elif t=="/"
:
elif t=="+"
:
elif t=="-"
:
return int(s.pop())
150 逆波蘭表示式求值
根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9 示例 2 輸入 4 13 5 輸出 6 解釋 4 13 5 6 示例 3 輸入 10 6 9 3 11 17 5 輸出 22 解釋 ...
150 逆波蘭表示式求值
題目描述 根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9 示例 2 ...
150 逆波蘭表示式求值
根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 整數除法只保留整數部分。給定逆波蘭表示式總是有效的。換句話說,表示式總會得出有效數值且不存在除數為 0 的情況。示例 1 輸入 2 1 3 輸出 9 解釋 2 1 3 9 示例 2 輸入 4 ...