【Leetcode】2696. 删除子串后的字符串最小长度

文章目录

  • 题目
  • 思路
  • 代码

题目

2696. 删除子串后的字符串最小长度
【Leetcode】2696. 删除子串后的字符串最小长度_第1张图片

思路

计算通过删除字符串中的 “AB” 和 “CD” 子串后,可获得的最终字符串的最小长度。
主要思路是使用一个栈来模拟字符串的处理过程,每次遍历字符串时,如果当前字符和栈顶的字符能够组成 “AB” 或 “CD” 子串,就将栈顶元素弹出,表示删除这个子串;否则,将当前字符压入栈中。
在最终,栈中剩余的字符即为无法删除的字符,其个数即为最小长度。

代码

class Solution {
public:
    int minLength(string s) {
        stack stk;
        for(auto t : s) 
        {
            if(stk.size() && ((t == 'B' && stk.top() == 'A') || (t == 'D' && stk.top() == 'C'))) stk.pop();
            else stk.push(t);
        }
        return stk.size();
    }
};

你可能感兴趣的:(练习题(记录做题想法),leetcode,算法,职场和发展,c++)