【LeetCode2696】删除子串后的字符串最小长度

1、题目描述

题目链接
标签:字符串模拟
难度:简单
给你一个仅由 大写 英文字符组成的字符串 s 。
你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。
通过执行操作,删除所有 “AB” 和 “CD” 子串,返回可获得的最终字符串的 最小 可能长度。
注意,删除子串后,重新连接出的字符串可能会产生新的 “AB” 或 “CD” 子串。

示例 1:
输入:s = “ABFCACDB”
输出:2
解释:你可以执行下述操作:

  • 从 “ABFCACDB” 中删除子串 “AB”,得到 s = “FCACDB” 。
  • 从 “FCACDB” 中删除子串 “CD”,得到 s = “FCAB” 。
  • 从 “FCAB” 中删除子串 “AB”,得到 s = “FC” 。
    最终字符串的长度为 2 。
    可以证明 2 是可获得的最小长度。

示例 2:
输入:s = “ACBBD”
输出:5
解释:无法执行操作,字符串长度不变。

提示:
1 <= s.length <= 100
s 仅由大写英文字母组成

2、基本思路

 这是一道简单的字符串处理的题目,可以用栈模型上述的删除的过程即可,值得注意的是,删除子串后,重新连接出的字符串可能会产生新的 “AB” 或 “CD” 子串。

下面是利用栈对示例 1 模拟的过程:

  • 初始化栈空;
  • 栈空,A入栈;
  • 当前元素B,与栈顶元素A,构成子串AB,A出栈;
  • 栈空,F入栈;
  • 当前元素C,栈顶元素F,构不成子串,C入栈;
  • 当前元素A,栈顶元素C,构不成子串,A入栈;
  • 当前元素C,栈顶元素A,构不成子串,C入栈;
  • 当前元素D,栈顶元素C,构成子串CD,C出栈;
  • 当前元素B,栈顶元素A,构成子串AB,A出栈;
  • 字符串元素遍历完毕,栈中元素的长度即为答案;

3、代码实现


int minLength(string s) {
   
    stack<char> st;
    for(int i = 0;i<s.length();++i)
    {
   
        char c = s[i];
        if(st.empty())
            st.push(c);
        else
        {
   
            if(c=='D'&&st.top()=='C')
                st.pop();
            else if(c=='B'&&st.top()=='A')
                st.pop();
            else
                st.push(c);
        }
    }
    return st.size();    
}

相关推荐

  1. LeetCode 2696.删除字符串长度:栈

    2024-01-11 19:46:02       52 阅读
  2. LeetCode2696删除字符串长度

    2024-01-11 19:46:02       57 阅读
  3. LeetCode 2697. 字典序回文

    2024-01-11 19:46:02       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 19:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 19:46:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 19:46:02       82 阅读
  4. Python语言-面向对象

    2024-01-11 19:46:02       91 阅读

热门阅读

  1. 47.解释一下Spring AOP里面的几个名词

    2024-01-11 19:46:02       58 阅读
  2. 解密TF-IDF:打开文本分析的黑匣子

    2024-01-11 19:46:02       40 阅读
  3. Unity中打印信息的两种方式

    2024-01-11 19:46:02       50 阅读
  4. 橘子学K8S03之容器的理解

    2024-01-11 19:46:02       46 阅读
  5. MYSQL 锁

    MYSQL 锁

    2024-01-11 19:46:02      58 阅读
  6. vector_angle_to_rigid

    2024-01-11 19:46:02       59 阅读
  7. Zookeeper+Kafka概述

    2024-01-11 19:46:02       46 阅读
  8. 【MQTT】MQTT协议与指令下发;MQTT与Kafka比较

    2024-01-11 19:46:02       48 阅读