首页 > 其他分享 >擅长处理临时数据的结构——栈

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

时间:2024-09-14 17:36:00浏览次数:1  
标签:index letters 读取 临时 flag len 处理 擅长 pop

目录


栈和数组存储数据的方式一样,它们都只是元素的列表。不同之处在于栈的以下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))

标签:index,letters,读取,临时,flag,len,处理,擅长,pop
From: https://www.cnblogs.com/mysticbinary/p/18367554

相关文章

  • MATLAB中的异常处理机制:掌握错误和警告的管理
    在MATLAB编程中,异常处理是一个关键组成部分,它允许程序员管理和响应在程序执行过程中可能发生的错误和警告。MATLAB提供了一套完整的机制来捕获、处理和引发异常,这些机制基于try/catch语句,以及error和warning函数。1.异常处理概述异常处理是确保程序在遇到错误时能够优雅......
  • MATLAB分布式计算工具箱:高效并行处理指南
    在科学计算和工程模拟中,MATLAB的分布式计算工具箱(ParallelComputingToolbox)和MATLAB分布式计算引擎(MDCE)提供了强大的并行处理能力,使得大规模数据处理和复杂计算任务得以高效解决。本文将详细介绍如何在MATLAB中使用这些工具进行分布式计算。1.分布式计算工具箱和MDCE简......
  • 视频监控平台中的视频处理核心技术揭秘:自动化监控与智能预警成为趋势?
    随着科技的飞速发展,视频监控作为安全管理与信息获取的重要手段,其技术也在不断革新与优化。一个高效的视频监控平台,不仅依赖于先进的硬件设备,更离不开强大的视频处理技术作为支撑。在众多视频监控平台中,安防监控EasyCVR视频汇聚平台凭借其强大的功能和灵活的部署方式,在智慧交通、城......
  • powershell@路径处理相关命令@路径拆分@路径解析@路径拼接@路径判断
    文章目录abstract一览表常用的路径处理场景重点路径处理命令1.Split-Path2.Convert-Path3.Join-Path4.Resolve-Path5.Test-Pathrvpavscvpa总结对比powershellprovider@powershell提供程序abstract在PowerShell中,处理路径相关的命令十分丰富,它们可以帮助我们管理、解析......
  • 【万字文档+PPT+源码】基于springboot+vue投稿和稿件处理系统-可用于毕设-课程设计-练
    博主简介:......
  • PbootCMS做英文站面包屑“首页”怎么处理
    在使用PbootCMS构建英文站点时,需要将面包屑中的“首页”文字改为英文“Home”。可以通过设置面包屑标签的参数来实现这一需求。面包屑标签标签格式:html {pboot:position}参数说明:separator=*:分隔符,默认为 >>。separatoricon=*:分割图标,默认为空,如使用图标字体 se......
  • 基于高级语言源程序格式处理工具
    基于高级语言源程序格式处理工具w,e,c,h,a,t:help-assignment图3.2识别标识符和整数的算法流程图如何来识别特定语言的所有单词,详见《综合程序设计课程设计指导-源程序格式处理》。语法分析的过程,建议采用的实现方法是编译技术中的递归下降子程序法,递归下降子程序法是......
  • OpenSSH 远程代码执行漏洞(CVE-2024-6387) Ubuntu22.04 和 centos7处理方法
    这是文档,不是脚本,请一行一行复制粘贴执行,不用批量自动执行下面是Ubuntu22.04和centos7的处理方法,其他系统可能需要适当调整#!/bin/bash#========================================================================================##Ubuntu22.04升级openssh#......
  • 减少 try...catch,定义全局统一异常处理器!【送源码】
    前言软件开发springboot项目过程中,不可避免的需要处理各种异常,springmvc架构中各层会出现大量的try{...}catch{...}finally{...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。这样就需要定义个全局统一异常处理器,以便业务层再也不必处理异常。推荐理由代码......
  • 迅为RK3588开发板/核心板 | 在高性能处理器上如何使用GPIO
    GPIO基本概念GPIO,即General-PurposeInput/Output,指的是可以由软件控制的通用输入输出引脚。每个GPIO引脚可以配置为输入或输出,用来读取外部设备的状态(如按键)或控制外设(如LED、马达等)GPIO应用领域GPIO作为嵌入式设备中不可或缺的接口,在以下多个领域有广泛应用:●智能家居:用于控制和......