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()
    }
}
}

学习感想