package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev

# README

面试题 16.26.计算器

1. 题目描述

给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。

表达式仅包含非负整数, +-*/ 四种运算符和空格 `` 。 整数除法仅保留整数部分。

示例 1:

输入: "3+2*2"
输出: 7

示例 2:

输入: " 3/2 "
输出: 1

示例 3:

输入: " 3+5 / 2 "
输出: 5

说明:

  • 你可以假设所给定的表达式都是有效的。
  • 不要 使用内置的库函数 eval

标签 数学 字符串

2. 解题

使用两个栈,一个数字栈,一个符号栈.

  • 遇数字,则进数字栈
  • 遇运算符
    • 当前运算符优先级大于栈顶运算符优先级,入栈
    • 当前运算符优先级小于栈顶运算符优先级,取出数字栈顶两个数字与符号栈顶符号,numStack[-2] op numStack[-1],结果入数字栈
  • 字符串结束,则依次取出数字栈与符号栈进行运算,运算结果放回数字栈。