zoukankan      html  css  js  c++  java
  • 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++ 数字和字符串互相转换

  • 相关阅读:
    容器的注册
    context创建过程解析(三)之deployDirectories
    context创建过程解析(二)之deployWARs
    Redis数据类型
    Kafka常用命令
    使用Charles抓包微信小程序
    DO、DTO、BO、AO、VO、POJO定义
    主题样式之鼠标点击效果
    Mysql常用命令
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14332270.html
Copyright © 2011-2022 走看看