2696. 删除子串后的字符串最小长度
难度: 简单
题目大意:
给你一个仅由 大写 英文字符组成的字符串
s
。你可以对此字符串执行一些操作,在每一步操作中,你可以从
s
中删除 任一个"AB"
或"CD"
子字符串。通过执行操作,删除所有
"AB"
和"CD"
子串,返回可获得的最终字符串的 最小 可能长度。注意,删除子串后,重新连接出的字符串可能会产生新的
"AB"
或"CD"
子串。提示:
1 <= s.length <= 100
s
仅由大写英文字母组成
分析
从左边往右边看,如果找到一个匹配条件,那么就直接删除,然后连接,反复进行,类似这样消消乐
,可以用栈数据结构来维护
代码实现
class Solution {
public:
int minLength(string s) {
stack<char> stk;
for (char c : s) {
if (stk.size() && (c == 'B' && stk.top() == 'A' || c == 'D' && stk.top() == 'C')) stk.pop();
else stk.push(c);
}
return stk.size();
}
};
时间复杂度 O ( n ) O(n) O(n)
结束了