リンク:
https://codeforces.com/contest/1216/problem/A
質問の意味:
ニコライは小文字のみラテン文字「a」と「b」で構成されても、長さnの文字列sを、得ました。その位置は、1からnまで番号が付けられています。
彼はさらに長さのすべてのそのプレフィックスは、文字「a」と「b」の同量を持つように彼の文字列を変更したいと考えています。それを達成するために、ニコライは(おそらく、ゼロ)回の次の操作任意の数を実行することができます(つまり、「」と「B」または交換」を交換する彼の文字列内のいくつかの位置を選択し、他の文字でこの位置に手紙を交換A「とB ')。ニコライは、「a」と「b」を除いて何の文字を使用することはできません。
長さl(1≤l≤n)の文字列sの接頭辞は、文字列s [1..l]です。
例えば、文字列s =「アバ」の偶数長さの2つのプレフィックスがあります。最初は、S [1 ... 2] = "AB" と第2のS [1 ... 4] = "アバ" です。それらの両方は、「a」と「b」の同じ番号を持ちます。
あなたの仕事は、ニコライは、偶数の長さのすべてのそのプレフィックスは、文字「a」と「b」の同量を持つようにそれを修正するために、文字列sを実行しなければならない操作の最小数を計算することです。
アイデア:
各文字の最初から異なる2が必要で、ライン上でそれを行います。
コード:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5+10;
int n;
char s[MAXN];
int main()
{
cin >> n;
cin >> s;
int op = 0, a = 0, b = 0;
for (int i = 0;i < n;i+=2)
{
if (s[i] != s[i+1])
continue;
if (s[i] == 'a')
s[i] = 'b';
else
s[i] = 'a';
op++;
}
cout << op << endl;
cout << s << endl;
return 0;
}