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

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

这题也是属于栈的经典应用。为什么这样说呢?因为也是让我们删除相邻项。注意这里相邻项的理解,并不仅仅是说最开始的字符串相邻的项。在我们删除了某些相邻项后,会改变字符串,导致原本不相邻的字符变成相邻的,这同样属于相邻项。这一系列比对字符再删除的流程恰好适用于用栈来解决。一些注意点我写在代码注释中。

代码如下:

class Solution {
public:
    string removeDuplicates(string s) {
       stack<char> st;
       for(int i = 0;i < s.size();i++){
        if(st.empty() || st.top() != s[i]){
               st.push(s[i]);
               continue;
        }
        st.pop();
       }
       //用来存储答案
       string result;
       //将栈里的字符拼接起来
       while(st.empty() != 1){
        result += st.top();
        st.pop();
       }
       //最后要反转顺序,因为将字符存入栈之后再弹出,栈顶对应字符串的尾部
       reverse(result.begin(),result.end());
       return result;
    }
};


http://www.kler.cn/a/511496.html

相关文章:

  • 图像去雾数据集的下载和预处理操作
  • 一些面试常见问题及其回答参考
  • 【English-Book】Go in Action目录页翻译中文
  • Reactive StreamsReactor Core
  • [JavaScript] 运算符详解
  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
  • 怎么投稿各大媒体网站?如何快速辨别一家媒体是否适合自己?
  • 2025年01月17日Github流行趋势
  • 资源管理模块集成Spring Cache
  • 【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键
  • TCP状态转移图详解
  • 【数据结构-堆】【hard】力扣502. IPO
  • 【opencv】第10章 角点检测
  • Kinova仿生机械臂Gen3搭载BOTA 力矩传感器SeneOne:彰显机器人触觉 AI 与六维力传感的融合力量
  • StarRocks 怎么让特定的SQL路由到FE master节点的
  • 推荐sdkman管理sdk和jdk
  • Java 基于 SpringBoot+Vue 的停车场管理系统(附源码,部署,文档)
  • 神经网络常见面试题
  • MySQL 主从复制原理及其工作过程的配置
  • Flowable 管理各业务流程:流程设计器 (获取流程模型 XML)、流程部署、启动流程、流程审批、流程挂起和激活、任务分配
  • 本地部署 Calcium 网页计算器并实现外部访问
  • MySQL数据库的数据文件保存在哪?MySQL数据存在哪里
  • efficient_pcm 函数
  • vue3+echarts+DataV实现省市县地图
  • 使用插件时的注意事项
  • 【Bluedroid】HFP连接流程源码分析(四)