zoukankan      html  css  js  c++  java
  • leetcode Evaluate Reverse Polish Notation

    题目连接

    https://leetcode.com/problems/evaluate-reverse-polish-notation/  

    Evaluate Reverse Polish Notation

    Description

    Evaluate the value of an arithmetic expression in Reverse Polish Notation.

    Valid operators are +, -, *, /. Each operand may be an integer or another expression.

    Some examples: 
    [“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9 
    [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6

    class Solution {
    public:
    	inline bool is_digit(char ch) {
    		return ch >= '0' && ch <= '9';
    	}
    	int evalRPN(vector<string>& tokens) {
    		stack<int> A;
    		int a, b;
    		size_t n = tokens.size();
    		for (size_t i = 0; i < n; i++) {
    			int v = 0;
    			if (is_digit(tokens[i][0]) || tokens[i].length() > 1) {
    				bool f = tokens[i][0] == '-';
    				size_t j, k = tokens[i].size();
    				for (j = f ? 1 : 0; j < k; j++) v = v * 10 + tokens[i][j] - '0';
    				A.push(f ? -v : v);
    			} else {
    				char &ch = tokens[i][0];
    				a = A.top(); A.pop();
    				b = A.top(); A.pop();
    				switch (ch) {
    					case '+':
    						A.push(a + b);
    						break;
    					case '-':
    						A.push(b - a);
    						break;
    					case '*':
    						A.push(a * b);
    						break;
    					case '/':
    						A.push(b / a);
    						break;
    				}
    			}
    		}
    		return A.top();
    	}
    };
  • 相关阅读:
    01 网络基础
    01 ansible的基本介绍
    10 面向对象的编程
    03 docker容器镜像基础
    09 异常处理
    08 输入输出
    07 数据结构
    02 docker的基本用法
    01 docker容器技术基础入门
    06 字符串
  • 原文地址:https://www.cnblogs.com/GadyPu/p/5034051.html
Copyright © 2011-2022 走看看