博客
关于我
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/

    你可能感兴趣的文章
    MQ 重复消费如何解决?
    查看>>
    mqtt broker服务端
    查看>>
    MQTT 保留消息
    查看>>
    MQTT 持久会话与 Clean Session 详解
    查看>>
    MQTT工作笔记0007---剩余长度
    查看>>
    MQTT工作笔记0009---订阅主题和订阅确认
    查看>>
    Mqtt搭建代理服务器进行通信-浅析
    查看>>
    MS Edge浏览器“STATUS_INVALID_IMAGE_HASH“兼容性问题
    查看>>
    ms sql server 2008 sp2更新异常
    查看>>
    MS UC 2013-0-Prepare Tool
    查看>>
    MSBuild 教程(2)
    查看>>
    msbuild发布web应用程序
    查看>>
    MSB与LSB
    查看>>
    MSCRM调用外部JS文件
    查看>>
    MSCRM调用外部JS文件
    查看>>
    MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
    查看>>
    MsEdgeTTS开源项目使用教程
    查看>>
    msf
    查看>>
    MSSQL数据库查询优化(一)
    查看>>
    MSSQL数据库迁移到Oracle(二)
    查看>>