【leetcode——栈的题目】——1003. 检查替换后的词是否有效python

2024-05-30 02:12

本文主要是介绍【leetcode——栈的题目】——1003. 检查替换后的词是否有效python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

给你一个字符串 s ,请你判断它是否 有效 。

字符串 s 有效 需要满足:假设开始有一个空字符串 t = "" ,你可以执行 任意次 下述操作将 t 转换为 s :

  • 将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft + "abc" + tright,其中 t == tleft + tright 。注意,tleft 和 tright 可能为  。

如果字符串 s 有效,则返回 true;否则,返回 false

示例 1:

输入:s = "aabcbc"
输出:true
解释:
"" -> "abc" -> "aabcbc"
因此,"aabcbc" 有效。

示例 2:

输入:s = "abcabcababcc"
输出:true
解释:
"" -> "abc" -> "abcabc" -> "abcabcabc" -> "abcabcababcc"
因此,"abcabcababcc" 有效。

示例 3:

输入:s = "abccba"
输出:false
解释:执行操作无法得到 "abccba" 。

提示:

  • 1 <= s.length <= 2 * (10 ** 4)
  • s 由字母 'a''b' 和 'c' 组成

题解:

一.需要的知识

这道题需要用到一个数据结构,它的名字叫 ,那么什么是栈呢?

数据结构中的栈(Stack)是一种特殊的线性数据结构,它遵循后进先出(LIFO,Last In First Out)的原则。这意味着最后一个被放入栈中的元素将是第一个被取出的元素。栈通常用于处理需要按特定顺序执行的任务,例如函数调用和递归、括号匹配、表达式求值等

还是不懂?     

这会直接懂了吧~

那么在python中怎么操作呢?

        1.创建栈

在Python中,你可以简单地通过创建一个空列表来初始化一个栈。

stack = []

        2.入栈(Push)

使用列表的append()方法可以将元素添加到栈顶。

stack.append('A') # 将元素'A'入栈
stack.append('B') # 将元素'B'入栈

        3.出栈(Pop)

使用列表的pop()方法并指定索引为-1可以移除并返回栈顶的元素。

top_element = stack.pop(-1) # 出栈操作,移除并返回栈顶元素,这里是'B'

如果不传递索引给pop()方法,它默认会弹出列表中的最后一个元素,这正是我们想要的栈行为。

top_element = stack.pop() # 同样是出栈操作,移除并返回栈顶元素

        4.查看栈顶元素(Peek 或 Top)

你可以通过索引-1来查看栈顶元素,但不移除它。

top_element = stack[-1] # 查看栈顶元素,这里是'A'

        5.判断栈是否为空

使用列表的长度来判断栈是否为空。

is_empty = len(stack) == 0 # 如果栈的长度为0,则为空

        6.获取栈的大小

使用len()函数来获取栈中元素的数量。

stack_size = len(stack) # 获取栈的大小

二.题解

class Solution:def isValid(self, s: str) -> bool:#1.字符串存在包含关系#2.数据结构为栈#3.只管a和c如果栈中无a但是遇到了入栈的c那么就是False#4.遇到ab就入栈即可#5.如果遇到c,那就判断栈的顶是不是b和栈顶的前一个是不是astack = []for i in range(len(s)):if s[i] == "c":if len(stack) < 2:return False elif stack.pop(-2) != "a" or stack.pop() != "b":return False else:stack.append(s[i])if len(stack) != 0:return Falsereturn True

题解在这里,如果是刚遇到这种数据结构的小伙伴,建议做一下这道题:20. 有效的括号

做完之后再来看这道题,或许就能了解很多。

结尾:

如果想刷力扣题没有团队没有动力怎么办?大家可以加入我的刷题群,一起刷题,有想进群的可以在底下评论:进群0.0

感谢大家的浏览,如有错误,望指正。

这篇关于【leetcode——栈的题目】——1003. 检查替换后的词是否有效python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015287

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L