A - C-Filter
Editorial
/
セキュリティに興味がある高橋君は、デジタルアーツ株式会社に就職したい青年です。
彼は、面接で自分をアピールするために、得意なプログラミングでフィルタリングソフト「C-Filter」を作ろうと考えています。
「C-Filter」は、与えられた文字列 s に、あらかじめ登録しておいた「NGワード」と一致する文字列が存在する場合、その文字列の長さと等しい数の
「NGワード」とは、半角英小文字と
例えば
ただし、NGワードは単語ごとに適用されるため、
また、NGワードはある単語に対して完全に一致する必要があります。
例えば、
文字列 s と、NGワードが与えられるので、C-Filterの出力する文字列を答えてください。
入力は以下の形式で標準入力から与えられる。
入力された文字列 s をC-Filterでフィルタリングした結果を 1 行で出力せよ。
なお、最後には改行を出力せよ。
Time Limit: 2 sec / Memory Limit: 64 MB
問題文
彼は、面接で自分をアピールするために、得意なプログラミングでフィルタリングソフト「C-Filter」を作ろうと考えています。
「C-Filter」は、与えられた文字列 s に、あらかじめ登録しておいた「NGワード」と一致する文字列が存在する場合、その文字列の長さと等しい数の
*
に置き換えて出力するソフトウェアです。この文字列を置き換える処理をフィルタリングと呼びます。「NGワード」とは、半角英小文字と
*
から構成されます。*
はすべての半角英小文字 1 文字と一致します。例えば
myonmyon
は、NGワードmyo*myon
と一致します。ただし、NGワードは単語ごとに適用されるため、
myo myon
はNGワード myo*myon
とは一致しません。また、NGワードはある単語に対して完全に一致する必要があります。
例えば、
abcde
は、NGワードabc
やbcd
、cde
に一致しません。
文字列 s と、NGワードが与えられるので、C-Filterの出力する文字列を答えてください。
入力
s N t_{1} : : t_{N}
- 入力は N+2 行からなる。
- 1 行目には 1 文字以上 1,000 文字以下の文字列 s が与えられる。
- s はフィルタリングする対象の文字列を半角スペースで区切って繋げた文字列である。
- 2 行目にはNGワードの個数を表す整数 N(0≦N≦50) が与えられる。
- 3 行目から N+2 行目までNGワードを表す文字列 t_{i}(1≦i≦N)が与えられる。
- 文字列 t_{i} は半角英小文字と
*
から構成される。 - 文字列 t_{i} の長さは 1 文字以上、 20 文字以下である。
- 文字列 t_{i} に含まれる
*
は、半角スペースを除くすべての半角英小文字 1 文字をフィルタリングの対象とします。
出力
なお、最後には改行を出力せよ。
入力例 1
abc aaa ababa abcba abc 2 abc **a**
出力例 1
*** aaa ***** abcba ***
- NGワードには
abc
と**a**
の 2 つの文字列が登録されています。 - 1 番目と 5 番目に入力される
abc
はNGワードabc
に一致するので、***
と出力されます。 - 3 番目に入力される
ababa
はNGワード**a**
に一致するので、*****
と出力されます。
入力例 2
aaaa aaa aaaaaa aaaa 3 a aa aaa
出力例 2
aaaa *** aaaaaa aaaa
- 完全一致のパターンだけを考慮すれば良いため、
aaaa
やaaaaa
は変える必要がありません。
入力例 3
i have a pen 1 *
出力例 3
* have * pen
- 1文字の単語だけNGワードとして認識されます。
入力例 4
digital arts 1 digital*arts
出力例 4
digital arts
- 半角スペースは
*
にマッチしません。