首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

擅长处理临时数据的结构——栈

编程知识
2024年09月14日 16:33

目录


栈和数组存储数据的方式一样,它们都只是元素的列表。不同之处在于栈的以下3个限制

  • 数据只能从栈末插入;
  • 数据只能从栈末删除;
  • 只能读取栈的最后一个元素。

队列链表...一样,都是抽象的数据结构
何为抽象数据结构? 它指一种数据组织的形式,它不关注具体的实现细节,而是专注于数据的逻辑结构和操作。在计算机科学中,抽象的数据结构定义了数据的组织方式和允许的操作,但不指定如何在计算机中实现这些操作的具体细节。

简而言之,栈在很多编程语言中没有具体的实现,你可以在数组的基础,自己给数组加上前文提的三个使用限制、使用方式,那么这个数组就是你想要的栈了。

实践1 —— 从字符串中移除星号

题目要求
image

解题思路:
考虑使用栈(stack)来帮助解决这个问题,因为栈的后进先出(LIFO)特性非常适合这个需求。

然后考虑*号的两种位置:

  • *a
  • a*

分别对应下面两种栈处理流程。先看 A * 位置的处理流程:
读取第一个坐标,
image
读取第二个坐标,pop掉栈里的元素
image
读取第三个坐标,
image
读取第四个坐标,
image

再看 * A 位置的处理流程:
第一次读取,
image

第二次读取,
image

第三次读取,flag -= 1
image

第四次读取,
image

第五次读取,
image

code参考:
代码不是很优化,只是实现了这个功能。

class Solution:
    def removeStars(self, s: str) -> str:
        index_letters = []
        flag = 0
        for i, v in enumerate(s):
            if v == "*":
                if len(index_letters) == 0:
                    flag += 1
                if len(index_letters) >= 1:
                    flag -= 1
                    index_letters.pop()
            if v != "*":
                index_letters.append(v)

            if len(index_letters) >= 1:
                for i in range(flag):
                    if (len(index_letters) != 0):
                        index_letters.pop()
                        flag -= 1

        newStr = ""
        for v1 in index_letters:
            newStr += v1
        return newStr


s = Solution()
s2 = "leet**cod*e"
s1 = "**o*d*ety"
print(s.removeStars(s2))
From:https://www.cnblogs.com/mysticbinary/p/18367554
本文地址: http://www.shuzixingkong.net/article/2027
0评论
提交 加载更多评论
其他文章 Codes 开源研发项目管理平台——创新的敏捷测试解决方案
Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程化管理缺陷、低代码接口自
Codes 开源研发项目管理平台——创新的敏捷测试解决方案 Codes 开源研发项目管理平台——创新的敏捷测试解决方案 Codes 开源研发项目管理平台——创新的敏捷测试解决方案
网络服务性能优化:Wrktcp与Perf工具详解
wrktcp安装 码云地址:https://gitee.com/icesky1stm/wrktcp 直接下载,cd wrktcp-master && make,会生成wrktcp,就ok了,很简单 wrktcp使用 压测首先需要一个服务,写了一个epoll+边沿触发的服务,业务是判断
网络服务性能优化:Wrktcp与Perf工具详解
react-pdf预览在线PDF的使用
1、在react项目中安装react-pdf依赖包 建议安装8.0.2版本的react-pdf,如果安装更高版本的可能出现一些浏览器的兼容性问题; npm install react-pdf@8.0.2 -S 1、PC端的使用 1.1、封装一个组件:PdfViewModal.tsx import R
react-pdf预览在线PDF的使用
小李移动开发成长记 —— 大话小程序
小李移动开发成长记 —— 大话小程序 做传统网站前端开发的同学初次接触小程序,会有许多困惑:为什么没有div,view 是什么、怎么没有 ajax,wx.request 为什么是回调方式、预览怎么要用小程序开发者工具、APPID有什么用、安装npm包怎么还要构建、tabBar 是什么、语法怎么和vu
小李移动开发成长记 —— 大话小程序
记一次 公司.NET项目部署在Linux环境压测时 内存暴涨分析
一:背景 讲故事 公司部署在某碟上的项目在9月份压测50并发时,发现某个容器线程、内存非正常的上涨,导致功能出现了异常无法使用。根据所学,自己分析了下线程和内存问题,分析时可以使用lldb或者windbg,但是个人比较倾向于界面化的windbg,所以最终使用windbg开干。 二:WinDbg 分析
前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口
本文通过将 arco 框架的前端项目,部署至 CentOS 7,并访问同服务器的 WebAPI 接口,来简单演示一下,如何将前端项目发布至 Linux 系统。
前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口 前端项目通过 Nginx 发布至 Linux,并通过 rewrite 配置访问后端接口
Go runtime 调度器精讲(六):非 main goroutine 运行
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go runtime 调度器精讲(三):main goroutine 创建 介绍了 main goroutine 的创建,文中我们说 main goroutine 和非 main goroutine 有区别。当时卖了个关子并未往下讲,这一讲
分析负数取模与取余的规则
目录负数"取模"基本概念修正定义取整规则决定商的值取模和取余不一样. 负数"取模" 基本概念 如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足 a = q*d + r,且0 <= r < d。其中,q 被称为商,r 被称
分析负数取模与取余的规则 分析负数取模与取余的规则 分析负数取模与取余的规则