LeetCode习题:计算器

这篇博客介绍了一种使用双栈算法解决LeetCode上关于计算器的算术表达式计算问题。通过遍历字符串,比较运算符栈顶运算符与当前运算符的优先级,进行相应的运算和入栈操作。最后,博主详细分析了算法的时间复杂度为O(n)和空间复杂度为O(1)。
摘要由CSDN通过智能技术生成
题目描述:给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+,- ,*,/ 四种运算符和空格  。 整数除法仅保留整数部分。
示例:
例1:
输入: "3+2*2"
输出: 7

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

例3:
输入: " 3+5 / 2 "
输出: 5
解题思路:双栈计算。创建两个栈结构,分别用于保存数字和运算符,遍历字符串时,遇到运算符,将当前运算符与运算符栈的栈顶进行优先级比较,如果栈顶运算符优先级低于当前运算符,将数字和当前运算符直接入栈,如果栈顶运算符优先级高于或者等于当前运算符,取出数字栈和运算符栈栈顶数据,结合num保存的临时数据进行运算,运算结果依然保存到num,取出运算符栈新的栈顶数据,进行以上逻辑比较及运算或者直接入栈。最后依次取出两个栈中的数据进行运算,返回运算结果。
特别注意:由于一次计算后,紧接着从运算符栈出栈了一个数据,如果比较结果是无需继续计算,直接入栈,当该数据不为空时,记得将其重新入栈。
解题开发语言:Swift
struct ArrayStack {
   
    private var listData: [String]!
    private var n: Int!
    private var count: Int!

    // 栈顶元素
    public var stackTop: String? {
   
        if count == 0 {
   
            return nil
        }
        return listData[count-1]
    }

    init(num: Int) {
   
        listData = [String](repeating: "", count: num)
        n = num
        count = 0
    }

    // 入栈
    public mutating func push(item: String) -> Bool {
   
        if count == n {
   
            resize()
        }
        listData[count] = item
        count += 1
        return true
    }

    // 出栈
    public mutating func pop() -> String? {
   
        if count == 0 {
   
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些可供参考的Visual Studio 2022学习资料和习题,希望对您有所帮助: 1. 官方文档:https://docs.microsoft.com/en-us/visualstudio/releases/2022/ 2. 微软官方课程:https://docs.microsoft.com/en-us/learn/browse/?terms=visual%20studio%202022 3. Codecademy课程:https://www.codecademy.com/learn/learn-visual-studio 4. Udemy课程:https://www.udemy.com/topic/visual-studio/ 5. Visual Studio 2022首次使用指南:https://www.c-sharpcorner.com/article/visual-studio-2022-first-look/ 6. Visual Studio 2022新功能概述:https://itnext.io/visual-studio-2022-new-and-enhanced-features-4db8cbf96f49 7. Visual Studio 2022快捷键:https://shortcutworld.com/Visual-Studio/win/Visual-Studio-2022_Shortcuts 8. LeetCode Visual Studio 2022插件:https://marketplace.visualstudio.com/items?itemName=LeetCode.LeetCodeExtension2022 以下是一些可供练习的Visual Studio 2022习题: 1. 制作一个简单的Windows窗体应用程序,包括按钮、标签和文本框,点击按钮后显示文本框中的内容。 2. 编写一个控制台应用程序,接收用户输入的两个整数,输出它们的、乘以及除的结果。 3. 编写一个WPF应用程序,实现一个简单的计算器功能。 4. 设计并实现一个简单的数据库应用程序,包括增删改查等基本功能。 5. 编写一个Web应用程序,使用ASP.NET Core技术,实现一个简单的博客系统,包括用户登录、发布、编辑、删除博客文章等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值