题解:P12310 [ICPC 2022 WF] 压缩
又是一道难(shui)题。
分析
- 检查当前末尾是否存在两个相邻相等的子串。
- 如果存在,就删去其中一个。
- 不断重复这个过程,直到无法再压缩。
#include <bits/stdc++.h> using namespace std; int main() { string s, res; cin >> s; for (char c : s) { res += c; int len = res.size();//长度 for (int l = 1; l * 2 <= len; ++l) { if (res.substr(len - 2 * l, l) == res.substr(len - l, l)) { res.erase(len - l, l);//去除相等的子串中一个 break; } } } cout << res << '\n';//输出 return 0; }