leetcode1047删除字符串中的所有相邻重复项

本文主要讲解删除字符串中的所有相邻重复项的要点与细节,按照步骤思考更方便理解 

c++代码如下,末尾

给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

具体要点:
1. 本题可以使用栈的方法来解决(注意栈的特点:先入后出):

        我们用栈来记录遍历过的元素

        栈顶元素即将入栈的元素就是题目中所提到的相邻项

        通过判断栈顶元素与即将入栈元素,若一样,即是重复项,弹出。若不一样则入栈

2. 需要注意的是,最后结果的顺序和我们的出栈顺序刚好相反,因为栈是先入后出

        所以我们最后需要反转一下。

3. 还有一种方法可以避免反转,我们用字符串模拟栈:

        每次元素压入栈的位置是栈顶        ——        每次加入字符串的位置是字符串末尾

        每次弹出的是栈顶元素                   ——        每次弹出字符串的是末尾元素

        需要反转后才能输出                       ——        直接按顺序输出字符串即可

总结:当遇到匹配问题,相邻问题是,栈是一种很好的解决办法 

c++用栈实现: 

class Solution {
public:string removeDuplicates(string s) {stack<char> stk;for(char c:s){if (stk.empty() || stk.top() != c) stk.push(c);else stk.pop();}string result = "";while(!stk.empty()){result += stk.top();stk.pop();}reverse(result.begin(), result.end());return result;}
};

c++用字符串模拟栈

class Solution {
public:string removeDuplicates(string s) {string result = "";for(char c:s){if (result.empty() || result.back() != c) result += c;else result.pop_back();}return result;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于格网的边缘点检测(python)

1、背景介绍 前文已介绍对点云进行格网处理&#xff0c;可以计算平面点云面积、格网拓扑关系构建&#xff0c;相关博客如下&#xff1a; &#xff08;1&#xff09;点云格网过程可视化&#xff08;C PCL&#xff09;-CSDN博客 &#xff08;2&#xff09;平面点云格网过程及可…

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https…

VScode如何调节编辑器字体大小

首先&#xff0c;在vscode界面&#xff0c;依照顺序输入“Ctrlk”、“Ctrls”&#xff0c;即可进入键盘快捷方式设定界面。&#xff08;如下图所示&#xff09; 其次&#xff0c;在搜索框中输入“缩小”或者“放大”&#xff0c;就会出现对应的“缩小编辑器字体”或者“放大编…

算法刷题总结

1. 排序算法 1.1 快速排序算法 public abstract class Sort<T extends Comparable<T>> {public abstract void sort(T[] array);protected boolean less(T first, T two) {return first.compareTo(two) < 0;}protected void swap(T[] array, int i, int j) {T…

Midjourney绘画提示词精选:提升AI艺术创作的秘诀

引言 在AI艺术创作领域&#xff0c;MidJourney作为一款强大的绘画生成工具&#xff0c;受到了越来越多艺术家和设计师的青睐。通过提供简洁但富有创意的提示词&#xff0c;可以帮助MidJourney生成令人惊叹的艺术作品。在本文中&#xff0c;我们将分享一些精选的MidJourney绘画…

Python数据分析-糖尿病数据集数据分析

一、研究背景介绍 糖尿病是美国最普遍的慢性病之一&#xff0c;每年影响数百万美国人&#xff0c;并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病&#xff0c;其中个体失去有效调节血液中葡萄糖水平的能力&#xff0c;并可能导致生活质量和预期寿命下降。。。。糖尿…

CentOS系统查看版本的各个命令

cat /etc/centos-release 查看CentOS版本 uname -a 命令的结果分别代表&#xff1a;当前系统的内核名称、主机名、内核发型版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称 cat /proc/version 命令用于查看Linux内核的版本信息。执行该命令后&#xf…

Springboot整合MinIO实现系统文件的便捷式管理实例

一、MinIO简介 1.基础描述 MinIO 是一个高性能的对象存储系统&#xff0c;用于存储大量非结构化数据。它以简洁、高效、可靠和高扩展性著称&#xff0c;能够胜任各种数据密集型任务。MinIO 采用了与 Amazon S3 兼容的 API&#xff0c;使得用户无需额外学习即可上手使用。下面…

DNF手游攻略:云手机辅助流光星陨刀详细攻略大全!

DNF手游中&#xff0c;流光星陨刀是鬼剑士的专属神器之一&#xff0c;拥有快速的攻击速度和优秀的物理与法术攻击属性&#xff0c;因其出色的性能和未来升级的潜力&#xff0c;成为广大玩家关注的焦点。 流光星陨刀的背景与起源 流光星陨刀作为鬼剑士的标志性武器之一&#xf…

如何加速GitHub Clone或文件下载

文章目录 0. 引言1. 使用第三方加速服务2. 使用下载工具3. 使用GitHub镜像站点加速访问3.1 自动地址替换配置3.2 raw文件下载加速 4. 通过国内云存储服务下载5. 参考 0. 引言 在国内访问GitHub时&#xff0c;下载速度常常会受到网络限制。为了更快地下载GitHub上的文件&#x…

STM32单片机开发入门(十)SSCOM串口通信助手软件安装及使用提供软件网盘链接

文章目录 一.概要二.SSCOM软件下载安装三.串口通讯配置及应用实例1.串口通讯基本配置2.字符串数据发送和接收的配置操作3.16进制数据发送和接收的配置操作4.定时自动发送数据配置操作5.wifi模块AT指令调试配置操作6.用串口烧录STM32单片机代码配置操作 四.以太网TCP服务器端配置…

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日&#xff0c;社区版家族正式发布V2024.5版本&#xff0c;其中&#xff0c;社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品&#xff0c;本系列文章从背景概念开始介绍&#xff0c;深入浅出的为读者介绍Scope的优势以及能力…

工业数字孪生:智能制造的新引擎

数字孪生技术&#xff1a;智能制造的新引擎 一、数字孪生技术的基本概念与工业应用 1.1 数字孪生的定义与原理 数字孪生技术是一种先进的集成技术&#xff0c;它通过在数字空间创建一个精准物理对象的虚拟模型&#xff0c;使得我们可以在数字空间中模拟、分析和预测物理实体…

如何在 Mac 上清空硬盘后恢复丢失的数据?

如果您不小心从 Mac 硬盘上删除了重要文件&#xff0c;您可能会感到非常沮丧。但您仍然可以找回丢失的信息。将 Mac 想象成一个大盒子&#xff0c;里面装着所有东西。丢弃某样东西就像撕掉盒子上的标签&#xff1a;房间现在可以放新东西了&#xff0c;但旧东西仍然在那里&#…

ios CCLanguage.m

// // CCLanguage.h // CCFC // // Created by xichen on 11-12-16. // Copyright 2011年 ccteam. All rights reserved. //#import <Foundation/Foundation.h>interface CCLanguage : NSObject {}// 获取系统当前使用的本地化语言(NSString *)getSystemLanguage;//…

JAVA期末复习题1

目录 Java 填空题整理及解析 1. 说出Java的特点&#xff1a; 2. Java的运行机制是先编译再解释运行。 3. 请按照以下分类补全对应的数据类型&#xff1a; 4. 在有限次数循环时&#xff0c;一般选择for循环结构&#xff1b;未知循环次数时&#xff0c;可以选择while循环结构…

Apple Vision Pro 开发者资源深度解析:加速您的空间应用创新之旅

随着Apple Vision Pro的发布,开发者们迎来了一片全新的技术蓝海,旨在推动增强现实(AR)和混合现实(MR)应用的边界。为了帮助广大创业者和开发者快速上手,Apple及开源社区提供了广泛而深入的资源,从基础教程到高级开发工具,全方位赋能开发者在Vision Pro平台上释放无限创…

【5G核心网】5G NWDAF(Network Data Analytics Function)网元功能介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

利用大数据技术优化电商返利系统的效率

利用大数据技术优化电商返利系统的效率 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊如何利用大数据技术优化电商返利系统的效率。 随着电商的…

leetcode 动态规划(基础版)最长回文字串

题目&#xff1a; 题解&#xff1a; 首先回文子串肯定是连续的&#xff0c;如果用dp来做就需要找出一个串的所有连续子串&#xff0c;枚举一个串所有连续子串的可行方案是首先枚举子串的右端点&#xff0c;范围是&#xff08;0~s.size()-1&#xff09;,在每一个右端点中枚举左…