1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Cランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 C#編
  5. 文字列の抽出 C#編

Cランク・スキルチェック過去問題セットのサムネイル
文字列の抽出 C#編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

長さ M の 2 つの異なったタグの組で囲まれた部分を、ある長さ N のテキストデータから抽出しようとしています。

1 行目に < と > で囲まれた半角英数字のタグがスペース区切りで開始、終了タグの順で入力されます。

2 行目に抽出を行う対象のテキストデータが入力されます。テキストデータは半角英数字とタグのみで構成されています。

抽出の手順は

1.テキストデータの先頭から、開始タグを見つけます。
2.開始タグ末尾から終了タグを探します。
3.開始タグから終了タグまでの間の文字列を出力します。もし、文字列が存在しない場合はと出力します。
4.終了タグの末尾を先頭として 1. から再度繰り返します。
5.テキストデータの末尾に到達したら終了します。



例えば

<abc> <xyz>
hoge<abc>piyo<xyz>aaa<abc>piyopiyo<xyz>

という入力がされた場合、開始タグ<abc>、終了タグ<xyz>とし、2 行目のテキストデータの先頭から<abc>を探します。

5 文字目に出現したので開始タグの末尾 10 文字目から<xyz>を探します。

14 文字目に出現したので開始タグ末尾 10 文字目から終了タグの先頭の 13 文字目の文字列を

piyo

と出力します。

文字列はまだ続いているので終了タグの末尾から再度開始タグを探し始めます。同じ手順を繰り返し

piyopiyo

と出力します。テキストデータの末尾に到達したので終了します。

入力される値

入力は以下のフォーマットで与えられます。

tag_a tag_b
S

・ 1 行目に半角スペースで区切られた 2 つの <> で囲まれた開始タグと終了タグが入力されます。2 つの文字列は同じものは入力されません。
・ 2 行目に抽出処理を行う文字列データ S が入力されます。必ず 1 組以上のタグが含まれ、タグは片方のみ出現することはありません。
・ それぞれの文字列は半角英数字とタグを表す < と > のみからなります。< と > はタグ以外では出現しないものとします。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

テキストデータに含まれる 2 つの文字列で囲まれた部分を出現した順に改行して出力してください。
もし、開始タグから終了タグまでの間の文字列が存在しない場合には<blank>と出力します。

条件

全てのテストケースにおいて以下の条件を満たします。

・ 3 ≦ M ≦ 100 (タグの囲み文字<>を含み最低3文字以上)
・ 6 ≦ N ≦ 5000

入力例1
<abc> <xyz>
hoge<abc>piyo<xyz>
出力例1

piyo

入力例2
<abc> <ijk>
<abc>xxxx<ijk>yyyyyy<abc>zzz<ijk>
出力例2

xxxx
zzz

入力例3
<abc> <ijk>
<abc><ijk>
出力例3
<blank>

問題一覧へ戻る

ページの先頭へ戻る