思路
逐位判断每个奇数位是否要删除。每个数字删除后,对应的下标会发生改变,所以要通过取模一个变量 \(m\),\(m\) 的值在 0 和 1 之间变换。最后通过判断每个数字是否被删除来输出。
代码
#include<bits/stdc++.h>
using namespace std;
string s;
bool f[200010];
int n,ans,m;
int main(){
cin>>n>>s;
for(int i=0;i<n;i++)
if(i%2==m){
if(i<n-1&&s[i]==s[i+1]) ans++,m=m^1,f[i]=1;
if(i==n-1) ans++,f[i]=1;
}
cout<<ans<<endl;
for(int i=0;i<n;i++)
if(!f[i]) cout<<s[i];
}