AT_digitalarts_1 C-Filter
Description
[problemUrl]: https://atcoder.jp/contests/digitalarts2012/tasks/digitalarts_1
セキュリティに興味がある高橋君は、デジタルアーツ株式会社に就職したい青年です。
彼は、面接で自分をアピールするために、得意なプログラミングでフィルタリングソフト「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} $
1. 入力は $ N+2 $ 行からなる。
2. $ 1 $ 行目には $ 1 $ 文字以上 $ 1,000 $ 文字以下の文字列 $ s $ が与えられる。
- $ s $ はフィルタリングする対象の文字列を半角スペースで区切って繋げた文字列である。
5. $ 2 $ 行目にはNGワードの個数を表す整数 $ N(0≦N≦50) $ が与えられる。
6. $ 3 $ 行目から $ N+2 $ 行目までNGワードを表す文字列 $ t_{i}(1≦i≦N) $が与えられる。
- 文字列 $ t_{i} $ は半角英小文字と `*` から構成される。
- 文字列 $ t_{i} $ の長さは $ 1 $ 文字以上、 $ 20 $ 文字以下である。
- 文字列 $ t_{i} $ に含まれる `*` は、半角スペースを除くすべての半角英小文字 $ 1 $ 文字をフィルタリングの対象とします。
入力された文字列 $ s $ をC-Filterでフィルタリングした結果を $ 1 $ 行で出力せよ。
なお、最後には改行を出力せよ。 ```
abc aaa ababa abcba abc
2
abc
**a**
```
```
*** aaa ***** abcba ***
```
- NGワードには`abc`と`**a**`の $ 2 $ つの文字列が登録されています。
- $ 1 $ 番目と $ 5 $ 番目に入力される`abc`はNGワード`abc`に一致するので、`***`と出力されます。
- $ 3 $ 番目に入力される`ababa`はNGワード`**a**`に一致するので、`*****`と出力されます。
```
aaaa aaa aaaaaa aaaa
3
a
aa
aaa
```
```
aaaa *** aaaaaa aaaa
```
- 完全一致のパターンだけを考慮すれば良いため、`aaaa` や `aaaaa` は変える必要がありません。
```
i have a pen
1
*
```
```
* have * pen
```
- 1文字の単語だけNGワードとして認識されます。
```
digital arts
1
digital*arts
```
```
digital arts
```
- 半角スペースは`*`にマッチしません。
Input Format
N/A
Output Format
N/A