测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题