ITの基礎知識|ITパスポート・基本情報

【文字列処理のアルゴリズム】の記事一覧

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。

基本情報技術者 令和7年公開問題 科目Bの注意事項


問題

次の記述中の空欄に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。

関数 search は,data から key の要素の並びと同じ並びを全て探し,その先頭の要素番号を全て格納した配列を返す。見つからなければ,要素数0 の配列を返す。関数 search を search({“a”,”b”,”a”,”b”,”c”,”a”,”b”,”c”}, {“a”,”b”,”c”}) として呼び出すと,`/*** β ***/` の行の条件式が真となる回数は[    ]回である。

[プログラム]

/* keyは,要素数1以上の配列である */
○整数型の配列: search(文字型の配列: data, 文字型の配列: key)
  整数型: i, j, lenData, lenKey
  整数型の配列: result ← {}  // 要素数0の配列

  lenData ← dataの要素数
  lenKey ← keyの要素数

  /* (lenData - lenKey + 1) が0以下のときは繰返し処理を実行しない */
  for (i を 1 から (lenData − lenKey + 1) まで 1 ずつ増やす)

    for (j を 1 から lenKey まで 1 ずつ増やす) // α
      if (data[i + j − 1] が key[j] と等しい) /*** β ***/
        if (j が lenKey と等しい)
          resultの末尾 に iの値 を追加する
        endif
      else
        αの行から始まる繰返し処理を終了する
      endif
    endfor
  endfor
  return result

  • ア:1
  • イ:2
  • ウ:3
  • エ:4
  • オ:5
  • カ:6
  • キ:7
  • ク:8
  • ケ:9
  • コ:10