新式字符串定义如下:
例如,字符串 good、string、xyyx 都符合要求,而字符串 bad、aa、aabc 则不符合。
现在你获得了一个字符串 S,你需要从该字符串中删除最少的字符数,使其变成一个新式字符串。
输出删除了多少个字符和最后的新式字符串。
借鉴了用户”mrning“的代码
//从前往后处理是可以的,因为如果先处理后面的,则前面的一样要处理 //两个连续的字符,删除哪一个也是无所谓的 //只在奇数位置考虑,如果当前奇数位置是连续的aa,删除一个a,下一个a变成奇数位置继续判断 //如果当前奇数位置不是连续的,直接加2,跳到下一个奇数位 #include <cstdio> #include <iostream> #include <string> using namespace std; const int MAXN = 2e5 + 5; string s; string ans; int main() { int N, K = 0; cin >> N >> s; int i = 0; while (i < N-1) { if (s[i] == s[i + 1]) ++i; else { ans += s[i]; ans += s[i + 1]; i = i + 2; } } cout << N - ans.size() << endl; cout << ans << endl; return 0; }
Week15 实验 - E - CodeForces 1165-C Good String
原文:https://www.cnblogs.com/qingoba/p/12988804.html