博客
关于我
Leedcode2-后缀表达式结果
阅读量:802 次
发布时间:2023-01-30

本文共 1745 字,大约阅读时间需要 5 分钟。

evaluation of arithmetic expressions. The valid operators include addition, subtraction, multiplication, and division. Each operand can be either an integer or another expression.

Examples

The expression ["2", "1", "+", "3", "*"] evaluates to ((2 + 1) * 3), resulting in 9. Similarly, the expression ["4", "13", "5", "/", "+"] evaluates to (4 + (13 / 5)), which equals 6.

Compiler Implementation

The implementation of the compiler involves two main approaches: Forward Analysis and Backward Analysis.

  • Forward Analysis

    • Traverse the expression from left to right.
    • Maintain a stack to store intermediate results.
    • For each operator, apply it to the top of the stack and the current operand.
    • Example: ["2", "1", "+", "3", "*"]
      • Traverse 2, push to stack.
      • Traverse 1, push to stack.
      • Traverse "+", pop 1 and 2, compute 3, push result.
      • Traverse 3, push to stack.
      • Traverse "*", pop 3 and 3, compute 9, push result.
  • Backward Analysis

    • Traverse the expression from right to left.
    • Use a stack to store intermediate results.
    • For each operator, pop operands from the stack and apply the operator.
    • Example: ["4", "13", "5", "/", "+"]
      • Traverse 4, push to stack.
      • Traverse 13, push to stack.
      • Traverse "5", push to stack.
      • Traverse "/", pop 5 and 13, compute 2.6, push result.
      • Traverse "+", pop 2.6 and 4, compute 6.6, push result.
  • How to use the code

    • Input expressions as vectors of strings.
    • Use strlen to determine string lengths.
    • Use strtol or stod for type conversion of operands and results.

    Status

    The current implementation supports basic arithmetic operations and ensures correct computation of expressions. Further works can include:

    • Addition of floating-point numbers.
    • Handling of parentheses and operator precedence.
    • Error checking for invalid expressions.

    转载地址:http://etgyk.baihongyu.com/

    你可能感兴趣的文章
    Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
    查看>>
    Python PyQt5:如何使用 PyQt5 显示错误消息
    查看>>
    Python PYSFTP-以字符串/文本形式传递私钥,而不是传递文件路径
    查看>>
    Python pytest 面试题!
    查看>>
    Python pytz 时区函数返回一个相差 9 分钟的时区
    查看>>
    python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
    查看>>
    Python random和json模块
    查看>>
    Python random模块seed理解
    查看>>
    python range()函数
    查看>>
    Python rdflib可传递查询
    查看>>
    Redis 配置高可用和搭建集群
    查看>>
    python redis 集群_python 搭建redis集群
    查看>>
    python redis连接,在Python中使用Redis连接池的正确方法
    查看>>
    python regex_Python RegEx
    查看>>
    python requests post 中文结果请求得到unicode
    查看>>
    Python Requests接口自动化测试实战
    查看>>
    Python requests模块
    查看>>
    python request与grequests该如何选择
    查看>>
    python request模块
    查看>>
    Python requirements.txt的使用方法
    查看>>