新式字符串定义如下:
例如,字符串 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