C++競プロ学習日記(仮)

( 学習記録であり解説Blogではないです )

Round #130 A. Dubstep|Codeforces

Problem - 208A - Codeforcesを解きました。

#include <bits/stdc++.h>
using namespace std;
int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);
	
	string S;
	cin >> S;
	S = "WUB" + S + "WUB";
	regex re( "(WUB)+" );
	S = regex_replace( S, re, " " );
	cout << S.substr( 1, S.size() - 2 ) <<endl;
	return 0;
}

初めてC++正規表現を使って問題を解きました。
与えられた文字列に含まれる WUB という単語を半角SPに置き換えるという問題です。
"(WUB)"だけだと1単語一致なのですが、
+ を付加すると連続する単語を置換できる様です。
これだけだと文頭、文末に半角スペースが残ってしまうので、
必ず文頭、文末に半角スペースが付く様に、受け取った文字列に"WUB"を付加して置換させます。
最後に文頭文末を除く位置だけをsubstr()しました。

この受け取った文字列に何かをわざと付加してから処理するのも
教わった競プロテク(?)なんですよねー。大変重宝しています。

正規表現楽しい!