A18278. 删除字符串
填空题
困难
知识点
题目描述
删除字符串
题目描述
给定一个仅由 X、Y、Z 三种字符组成的字符串 s。
只要 s 中包含连续子串 XYZ,就重复执行以下操作:删除 s 中最靠左的连续子串 XYZ。
请你输出经过所有操作后,最终得到的字符串。
输入格式
第一行一个字符串 s,仅由 X、Y、Z 三种字符组成。
输出格式
输出一行,为经过所有操作后得到的最终字符串。
输入样例
YXXYZYZZXYZXX输出样例
YZXZ说明提示
字符串 s 仅由 X、Y、Z 三种字符构成; 字符串长度满足 1 ≤ |s| ≤ 2 * 105
参考答案
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s, stk;
cin >> s;
for (char c : s) {
stk.push_back(c);
// 长度够3个字符才可以校验XYZ
if (stk.size() >= 3) {
int len = stk.size();
if (stk[len - 3] == 'X' && stk[len - 2] == 'Y' && stk[len - 1] == 'Z') {
// 弹出末尾三位
stk.pop_back();
stk.pop_back();
stk.pop_back();
}
}
}
cout << stk << '\n';
return 0;
}
上一题
下一题