力扣2696. 删除子串后的字符串最小长度

这篇具有很好参考价值的文章主要介绍了力扣2696. 删除子串后的字符串最小长度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Problem: 2696. 删除子串后的字符串最小长度

思路

可以知道能够消除的只有AB 和CD 的者两种排列顺序方式,但是也许在发生一次消除后还会引发后续的消除可能性。

  1. 元素从前向后进行检测,如果是A或者C进行标记入栈,然后传入的如果是与之对应的B或者D,则达成消除,如果不是也直接入栈;
  2. 每次都对栈顶元素和即将传入的元素做匹配判断,匹配的消除,栈顶元素下移,同时继续进行匹配判断;
  3. 知道最后一个元素入栈,最后栈内含有的元素数量就是最后得到的最小长度。

解题方法

1.建立一个栈,初始化栈底=0;
2.将字符串的元素传入与栈顶元素做比较,如果栈顶是A或者C,同时即将进站的元素是B或者D,那么此时对栈顶元素做弹出操作,同时元素不再入栈;
3.最后返回栈的长度-1即可(除去初始化的一个长度)。

复杂度

时间复杂度:

时间复杂度 O ( n ) O(n) O(n)

空间复杂度:

空间复杂度 O ( n ) O(n) O(n)文章来源地址https://www.toymoban.com/news/detail-824093.html

Code

class Solution {
public:
    int minLength(string s) {
        std::stack<char>myStack;
        myStack.push('0');
        for(int i =0 ;i<s.size();i++){
            if((myStack.top()=='A'&& s[i]=='B')||(myStack.top()=='C'&& s[i]=='D'))
            {
                myStack.pop();
                continue;
            }
            myStack.push(s[i]);
        }
        return myStack.size()-1;
    }
};

到了这里,关于力扣2696. 删除子串后的字符串最小长度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字符串解码:给一个字符串,返回解码后的字符串。

    字符串解码,给一个字符串s,返回解码后的字符串。字符串编码规则为k[str]表示括号内部str字符串正好重复k次,k保证为整数,并且输入的字符串肯定符合这种编码规则不会有额外的空格。 注意事项: 注意括号可能发生嵌套,例如输入字符串为 3[a2[c]] 应该返回accaccacc 1 = s

    2024年02月16日
    浏览(30)
  • c 取字符串中的子串

    strcpy(S.ch,ch1) 赋值函数; 字符串没特殊处理,就是从0开始的 %s输出字符串,%c输出字符

    2024年02月07日
    浏览(28)
  • 练习题 替换子串得到平衡字符串

    题目 有一个只含有  \\\'Q\\\', \\\'W\\\', \\\'E\\\', \\\'R\\\'  四种字符,且长度为  n  的字符串。 假如在该字符串中,这四个字符都恰好出现  n/4  次,那么它就是一个「平衡字符串」。 给你一个这样的字符串  s ,请通过「替换一个 子串 」的方式,使原字符串  s  变成一个「平衡字符串」。

    2024年01月18日
    浏览(40)
  • ( 字符串) 647. 回文子串 ——【Leetcode每日一题】

    难度:中等 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串

    2024年02月01日
    浏览(32)
  • C++ 字符串中找子串出现的个数。

    字符串中找子串出现的个数。 #include stdio.h #include string.h int find(char *s) {          char str[] = \\\"program\\\";     for (int i = 0; i strlen(str); i++) {         if (s[i] != str[i])             return 0;     }     return 1; }   void main() {     char msg[100];     int i=0,cnt = 0;     gets(msg);     do {      

    2024年01月20日
    浏览(35)
  • 【算法训练-字符串 三】最长公共子串、最长公共子序列

    废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【】,使用【】这个基本的数据结构来实现,这个高频题的站点是: CodeTop ,筛选条件为: 目标公司+最近一年+出现频率排序 ,由高到低的去 牛客TOP101 去找,只有两个地方都出现过才做

    2024年02月09日
    浏览(32)
  • python判断字符串是否包含子串的五种方法

    要判断某一个字符串是否包含某一个子串,方法之一是可以利用python内置的字符串方法find()来查找,如果查找到,就返回子串第一个字符在原字符串中的索引位置,如果找不到,则返回-1,实例代码如下: count()也是python内置的字符串方法之一,可以用于统计参数指定的子串在

    2024年02月11日
    浏览(44)
  • C++string类replace()函数(替换字符串中的子串)

    C++中的string类提供了replace()函数,用于替换字符串中的子串。其函数原型如下: 其中,pos表示要替换的子串在原字符串中的起始位置,len表示要替换的子串的长度,str表示用来替换的字符串。 replace()函数的使用方法非常简单,只需要传入要替换的子串的位置、长度和替换字

    2024年02月05日
    浏览(40)
  • 从键盘输入一个字符串,将此字符串按字符的ASCII码值从小到大排序,并显示排序后的字符串。

    题面: 字符串排序:要求编写程序,将给定字符串中的字符,按照ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串。 输出格式: 输出排序后的结果字符串。 输入样例: bfh3q487ybefg734 输出样例: 3344778bbeffghqy 思路: Dwl同学一开始给我的代码

    2024年02月05日
    浏览(51)
  • 【JavaScript数据结构与算法】字符串类(计算二进制子串)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端(Node.js) 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力 n 年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目

    2024年02月05日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包