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

    你可能感兴趣的文章
    Python3之写入Excel文档(xlsxwriter)
    查看>>
    Python3之打印操作打印流重定向(下)
    查看>>
    python3判断字典、列表、元组为空以及字典是否存在某个key的方法
    查看>>
    Python3利用pymysql操作 MySQL
    查看>>
    python3处理json文件中含有中文dumps的应用
    查看>>
    Python3子进程输出
    查看>>
    Python3学习笔记3,变量、运算符
    查看>>
    Python3学习笔记(urllib模块的使用)
    查看>>
    python3安装scapy_Linux下安装scapy-python3
    查看>>
    python3实现socket通信
    查看>>
    Python关于numpy.transpose函数详细解析附代码
    查看>>
    Python3导入自定义模块的3种方式
    查看>>
    python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
    查看>>
    python3爬虫抓取智联招聘职位信息代码
    查看>>
    Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
    查看>>
    python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
    查看>>
    Python3笔记——IDE的选择
    查看>>
    python3简单使用requests 用户代理,cookie池
    查看>>
    Python3组播通信编程实现教程(发送者+接收者)
    查看>>
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>