计算通过删除字符串中的 “AB” 和 “CD” 子串后,可获得的最终字符串的最小长度。
主要思路是使用一个栈来模拟字符串的处理过程,每次遍历字符串时,如果当前字符和栈顶的字符能够组成 “AB” 或 “CD” 子串,就将栈顶元素弹出,表示删除这个子串;否则,将当前字符压入栈中。
在最终,栈中剩余的字符即为无法删除的字符,其个数即为最小长度。
class Solution {
public:
int minLength(string s) {
stack<char> 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();
}
};