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

LeetCode - 1047. 删除字符串中的所有相邻重复项

题目

1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

思路与过程

这是一个典型的栈应用问题。我们可以用栈来跟踪字符,当遇到与栈顶相同的字符时,就将栈顶元素弹出(相当于删除这对相邻重复项)。

核心思想

  • 遍历字符串中的每个字符
  • 如果当前字符与栈顶字符相同,则将栈顶字符弹出(删除这对相邻重复项)
  • 否则,将当前字符入栈
  • 最后,栈中剩余的字符就是结果

详细过程

以输入 "abbaca" 为例:

初始状态:栈为空

处理字符 'a':

  • 栈为空,将 'a' 入栈
  • 栈:['a']

处理字符 'b':

  • 栈顶是 'a',与 'b' 不同,将 'b' 入栈
  • 栈:['a', 'b']

处理字符 'b':

  • 栈顶是 'b',与当前字符 'b' 相同,弹出栈顶
  • 栈:['a']

处理字符 'a':

  • 栈顶是 'a',与当前字符 'a' 相同,弹出栈顶
  • 栈:[](空栈)

处理字符 'c':

  • 栈为空,将 'c' 入栈
  • 栈:['c']

处理字符 'a':

  • 栈顶是 'c',与 'a' 不同,将 'a' 入栈
  • 栈:['c', 'a']

最终栈中的字符:['c', 'a']

将栈中元素从底到顶组成字符串:"ca"

可能出现的错误写法

class Solution {
public:string removeDuplicates(string s) {stack<char> st;string result;if(s.empty()){return s;}for(int i = 0; i< s.size();i++){if(s[i] == st.top()){st.pop();}else{st.push(s[i]);}}while(!st.empty()){result.push_back(st.top());st.pop();}return result;}
};

栈为空时访问栈顶:即使你检查了输入字符串 s 是否为空,但在第一次迭代时,栈 st 仍然是空的。当你尝试访问 st.top() 时,如果栈为空,这会导致未定义行为。

结果顺序问题:从栈中弹出元素的顺序与它们在原始字符串中的顺序相反,所以最终结果需要反转。

正确的写法

class Solution {
public:string removeDuplicates(string s) {stack<char> st;string result;if(s.empty()){return s;}for(int i = 0; i< s.size();i++){if(!st.empty() && s[i] == st.top()){st.pop();}else{st.push(s[i]);}}while(!st.empty()){result.push_back(st.top());st.pop();}reverse(result.begin(),result.end());return result;}
};

相关文章:

  • Spring中@Value注解:原理、加载顺序与实战指南
  • 使用ExecutorService进行异步任务调度
  • 初学者运行Pycharm程序可能会出现的问题,及解决办法
  • Dagster软件定义资产(SDA)完全指南:从概念到落地实践
  • 前端开发中vue的脚手架你知道是什么意思吗?
  • Java中的集合框架:List、Set、Map的使用与性能对比
  • 自动托盘搬运车是什么?它的工作逻辑如何实现物流自动化?
  • Office2019下载安装教程(2025最新永久方法)(附安装包)
  • 小程序 UI 设计,怎样在方寸间实现高效交互
  • PosterSQL日常维护
  • 免费开源的微信开发框架
  • 深度学习小项目合集之图像分割识别-视频介绍下自取
  • 【AI智能体】Coze 数据库从使用到实战操作详解
  • MySQL 8配置文件详解
  • JavaEE-发展历史
  • 使用 C++ 和 OpenCV 构建智能答题卡识别系统
  • 编程学习网站大全(C++/OpenCV/QT方向)—— 资源导航与深度评测
  • 【Lua热更新知识】学习三 XLua学习
  • JavaEE-SpringBoot
  • JavaEE-Maven
  • 网站建设单页面推广模板/营销型网站建设套餐
  • 有哪些网站可以做兼职/推广文章的推广渠道
  • 深圳建网站三千/市场营销毕业论文5000字
  • 祁阳seo/刷排名seo
  • 网站被人做跳转改如何举报/营销策划公司介绍
  • 浦东新区建设和交通委员会网站/安卓aso优化工具