码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 擅长处理临时数据的结构——栈


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


    栈和数组存储数据的方式一样,它们都只是元素的列表。不同之处在于栈的以下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))
    
  • 相关阅读:
    SpringBoot3集成WebSocket
    STM32开发(二十九)STM32F103 数据手册 —— 高级定时器 TIM1 TIM8详解
    编译原理期末复习
    中国生态系统服务空间/食物生产、土壤保持、水源涵养、防风固沙、生物多样性、碳固定
    C++继承关系和复合关系
    基于matlab目标雷达横截面建模(附源码)
    数据特征选择 | Lasso特征选择(Python)
    【云原生--Kubernetes】安全机制
    zookeeper集群搭建Windows 7
    若依 ruoyi 新增每页分页条数
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/18367554
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号