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()しました。
この受け取った文字列に何かをわざと付加してから処理するのも
教わった競プロテク(?)なんですよねー。大変重宝しています。
正規表現楽しい!