• LeetCode150. 逆波兰表达式求值


    题目

    逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。逆波兰表达式主要有以下两个优点:

    1.去掉括号后表达式无歧义,也可以依据次序计算出正确结果。
    2.适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

    思路

    遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

    代码

     1 class Solution {
     2 public:
     3     int evalRPN(vector<string>& tokens) {
     4         stack<int>stk;
     5         for(int i = 0;i < tokens.size();i++){
     6             if(tokens[i] == "+" ||
     7                  tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){
     8                     int a = stk.top();
     9                     stk.pop();
    10                     int b = stk.top(); 
    11                     stk.pop();
    12                     if(tokens[i] == "+") stk.push(b+a);
    13                     if(tokens[i] == "-") stk.push(b-a);
    14                     if(tokens[i] == "*") stk.push(b*a);
    15                     if(tokens[i] == "/") stk.push(b/a);
    16                 }
    17                 else{
    18                 stk.push(stoi(tokens[i]));
    19             }
    20         }
    21         return stk.top();
    22     }
    23 };

    总结:

    字符串转换为数字,直接用stoi函数,头文件时#include<cstring>,该函数会做范围检查,默认在int范围内,如果超出 int 范围会报 runtime error 

    有关C++ 数字和字符串互相转换

  • 相关阅读:
    四级英语day9
    123
    像程序员一样思考
    Kali
    OS X
    Effective Java
    DHU ACM OJ
    Ambari
    Hadoop
    Hadoop2
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14332270.html
Copyright © 2020-2023  润新知