首页 > 编程语言 >编程题-删除字符串中所有相邻重复项

编程题-删除字符串中所有相邻重复项

时间:2025-01-06 11:28:51浏览次数:3  
标签:ch string 删除 编程 back stk 相邻 字符串

题目:

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

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

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

解题:

充分理解题意后,我们可以发现,当字符串中同时有多组相邻重复项时,我们无论是先删除哪一个,都不会影响最终的结果。因此我们可以从左向右顺次处理该字符串。栈。我们只需要遍历该字符串,如果当前字符和栈顶字符相同,我们就贪心地将其消去,否则就将其入栈即可。

由于 std::string 类本身就提供了类似「入栈」和「出栈」的接口,因此我们直接将需要被返回的字符串作为栈即可。对于其他的语言,如果字符串类没有提供相应的接口,则需要在遍历完成字符串后,使用栈中的字符显式地构造出需要被返回的字符串。如下为代码:

class Solution {
public:
    string removeDuplicates(string s) {
        //定义string类型(以包含入栈出栈的相似接口操作)
        string stk;
        for (char ch : s) {
            //stk.back()为取字符串最后的元素,stk.pop_back()为清除字符串最后一位元素
            if (!stk.empty() && stk.back() == ch) {
                stk.pop_back();
            } else {
                //stk.push_back为将ch类型字符压入string类型的栈
                stk.push_back(ch);
            }
        }
        return stk;
    }
};

特别注意:std::string类本身意见提供了类似栈操作的接口函数,因此我们直接通过stk.back()、stk.pop_back()、stk.push_back()函数,进行字符串取最后一位元素、移除最后一位元素、压入最后一位元素。在利用C++编写时可直接使用,极大简化代码编写复杂度。

标签:ch,string,删除,编程,back,stk,相邻,字符串
From: https://blog.csdn.net/qq_43287713/article/details/144946207

相关文章

  • 算法之字符串
    反转字符串II思路:将begin到begin+k-1的部分进行翻转,其中中间节点的下标值为begin+k-1,一轮结束后新的起点下标为begin=begin+2*k,判断条件为字符串长度>begin+k-1。java基础:StringBuffer中不需要将地址再传回,使用方法时会将地址作为形参传入到方法体内,在方法体中的修改将是最终......
  • IDA Pro 9.0 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
    IDAPro9.0(macOS,Linux,Windows)-强大的反汇编程序、反编译器和多功能调试器Apowerfuldisassembler,decompilerandaversatiledebugger.Inonetool.请访问原文链接:https://sysin.org/blog/ida-pro/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgIDA......
  • 【RK3588 Linux 5.x 内核编程】-Misc设备驱动
    Misc设备驱动文章目录Misc设备驱动1、什么是Misc设备驱动2、Misc驱动API2.1Misc设备结构2.2注册Misc设备2.3注销Misc设备3、驱动实现4、驱动测试本文将详细介绍Linux内核中的Misc驱动。1、什么是Misc设备驱动MiscDriver是杂项设备的杂项驱......
  • 202409 青少年软件编程等级考试Python三级真题 建议答题时长:60min(含答案及分析)
    原连接:竞赛考级题库--202409青少年软件编程等级考试Python三级真题-Python1.编程题鸡兔同笼小明在解决经典的“鸡兔同笼”问题时,使用“穷举法”编写了以下代码。请将代码中红色①②③④处补充完整:tou=int(input("请输入笼中鸡与兔脑袋的总数: "))jiao=int(input......
  • 【python编程】避免 Python 中的反模式编程
    Python受欢迎的原因之一是其灵活性,这对开发人员有很多好处。然而,它也包含一些陷阱和坏习惯,这些陷阱和坏习惯会导致代码难以阅读、维护或调试。在本文中,我们将介绍一些常见的Python反模式以及如何避免它们。建议新手程序员避免不好的编码习惯,并且不断练习良好的编码风格,会为以后......
  • 你了解少儿编程吗?说说你对它的看法
    少儿编程:培养未来创新者的关键途径少儿编程,作为近年来教育领域的新兴热点,正逐渐受到全球范围内的关注和重视。它不仅是培养孩子逻辑思维能力、问题解决能力以及创新精神的有效工具,更是为他们未来融入数字化社会打下坚实基础的重要途径。以下是我对少儿编程的一些看法,主要从前端开......
  • C语言指针数组在字符串的实例
    还记得指针数组吗?(一堆指针组成的数组)我们当时推荐字符串用这一块的内容,因为一句话可以用指针代替然后用指针数组组合在一起成为一个语句组成的的矩阵(总之就是攒在一起了方便操作),这一节也建议回顾一下字符串这一块,和string函数库基本格式与录入输出我们首先要创建一个指针数......
  • [ Netty ] 通过Netty聊天业务来加深理解Netty运行以及网络编程.
    引言这几天在学习Netty网络编程的过程当中对Netty的运作原理及流程有一定的了解,通过Netty实现聊天业务来加深对Netty的理解.这里用一张图概括运行流程这里我在Github上面找到一位大神总结的尚硅谷的学习笔记,里面有写Netty的运作原理(但是因为前面一直在讲原理我自己身原因容......
  • 《汇编程序语言》第11~15章
    第十一章输入输出程序设计键盘输入(BIOS中断调用);数据段定义DATASEGMENT;预留一个字节用于存储读取的字符INPUT_CHARDB?DATAENDS;代码段定义CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;将数据段地址加载到AX寄存器......
  • 《汇编程序语言》第6~10章
    以下是对《汇编程序语言》中这几章内容的详细介绍:第六章循环结构程序一、循环结构概述概念:循环结构允许程序在满足特定条件时,重复执行一段代码。这在需要多次执行相同或相似操作的场景中非常有用,例如对数组的每个元素进行处理,或者进行多次迭代计算。通过循环结构,可以避......