当前位置: 首页 > news >正文

LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记

LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记

🗓️ 本文属于【LeetCode 简单题百日计划】系列
👉 点击查看系列总目录 >>


📌 题目简介

题号:1047. 删除字符串中的所有相邻重复项
难度:简单
题目链接:点击跳转


🧾 题目描述(简要)

给出由小写字母组成的字符串 s,请你删除字符串中 所有相邻重复项,返回最终的字符串。
你必须 每次删除两个相邻的相同字符,直到无法继续删除。

示例:

输入:s = "abbaca"
输出:"ca"
解释:
例如,输入字符串 "abbaca" ,经处理后得到 "ca" ,其中,"bb" 被删除,"aa" 被删除。

💡 解法:使用栈来存储字符

class Solution:def removeDuplicates(self, s: str) -> str:stack = []for char in s:if stack and stack[-1] == char:stack.pop()  # 遇到相同的字符就弹出栈顶字符else:stack.append(char)return ''.join(stack)

🧠 我的理解

  • 遇到相邻重复字符时,利用栈的特性,删除栈顶字符;
  • 如果栈顶字符与当前字符相同,则弹出栈顶,否则入栈;
  • 最后将栈中的字符连接成字符串输出;
  • 时间复杂度是 O(n),空间复杂度是 O(n),适用于此类问题。

📌 基础语法复习:

  • stack.append(char):将元素推入栈;
  • stack.pop():弹出栈顶元素;
  • stack[-1]:访问栈顶元素;
  • ''.join(stack):将栈中的字符连接成一个字符串。

📌 返回总目录:点我回目录

http://www.lryc.cn/news/587107.html

相关文章:

  • java.net.InetAddress
  • 嵌入式 Linux开发环境构建之安装 SSH 软件
  • MongoDB数据基本介绍
  • 小白成长之路-LVS
  • 【VSCode+LaTeX】科研写作环境搭建
  • C语言的一些随笔
  • 面试150 填充每个节点的下一个右侧节点指针Ⅱ
  • 006_测试评估与安全实践
  • 2025上海市“星光计划“信息安全管理与评估赛项二三阶段任务书
  • RAG篇(RAG的流程)
  • STM32-第六节-TIM定时器-2(输出比较)
  • Linux驱动开发2:字符设备驱动
  • iOS UI视图面试相关
  • 哪些行业的“反内卷”前景更好?
  • ADB 调试日志全攻略:如何开启与关闭 `ADB_TRACE` 日志
  • 【Datawhale夏令营】用AI做带货视频评论分析
  • [附源码+数据库+毕业论文+答辩PPT+部署教程+配套软件]基于SpringBoot+MyBatis+MySQL+Maven+Vue实现的交流互动管理系统
  • 每天学一个八股(二)——详解HashMap
  • 26-计组-指令执行过程
  • HTML5 离线存储
  • MyBatis04-MyBatis小技巧
  • Typecho后台编辑器自定义按钮开发实战指南
  • Spring Boot 集成 Spring Security 完整示例
  • Sping AI Alibaba
  • 《区间dp》
  • Linux锁的概念及线程同步
  • Python异步编程
  • 【版本控制】Perforce Helix Core (P4V) 完全入门指南(含虚幻引擎实战)
  • CAU数据挖掘第四章 分类问题
  • 从儿童涂鸦到想象力视频:AI如何重塑“亲子创作”市场?