150. 逆波兰表达式求值
题目描述
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
注意:
有效的算符为 '+'、'-'、'*' 和 '/' 。 每个操作数(运算对象)都可以是一个整数或者另一个表达式。 两个整数之间的除法总是 向零截断 。 表达式中不含除零运算。 输入是一个根据逆波兰表示法表示的算术表达式。 答案及所有中间计算结果可以用 32 位 整数表示
解题思路
#![allow(unused)] fn main() { struct Solution {} impl Solution { pub fn eval_rpn(tokens: Vec<String>) -> i32 { let mut v = vec![]; for s in tokens { let a = vec!["+","-","*","/"]; if a.contains(&&s[..]) { let x = v.pop().unwrap(); let y = v.pop().unwrap(); match &s[..] { "+" => {v.push(x+y)}, "-" => {v.push(y-x)}, "*" => {v.push(y*x)}, "/" => {v.push(y/x)}, _ => {}, } } else { v.push(s.parse::<i32>().unwrap()); } } v.pop().unwrap() } } }