IPA過去問ドリル

平成21年度 春期 応用情報技術者試験 午前 問4

テクノロジ/基礎理論

長さnの文字列c1c2…cnの中に,部分文字列は全部で幾つあるかを表す式はどれか。ここで,空文字列(長さ0の文字列)とc1c2…cn自身も部分文字列とみなす。例えば,長さ3の文字列c1c2c3の中に,部分文字列はc1,c2,c3,c1c2,c2c3,c1c2c3及び空文字列の7個がある。

出典:平成21年度 春期 応用情報技術者試験 午前 問4

正解:イ

解説

長さnの文字列の空でない連続部分文字列は,開始位置と終了位置の組合せで数えられ,n(n+1)/2通りあります。これに空文字列の1個を加えると,全部でn(n+1)/2+1個になります。長さ3の例では3×4/2+1=7個となり,問題文の例と一致します。

選択肢ごとの解説

  • 誤り。2ⁿ-1は文字列から要素を選ぶ組合せ(連続でない部分列も含む)の数に近い式で,連続部分文字列の数ではありません。
  • 正しい。連続部分文字列はn(n+1)/2通りあり,空文字列を加えるとn(n+1)/2+1個になります。
  • 誤り。n(n-1)+1は,例えばn=3で7になりますが,n=2で3となり実際の部分文字列数(空含め4個)と合いません。
  • 誤り。n!+1は順列の数に基づく式で,部分文字列の数え方とは無関係です。
応用情報技術者の過去問を演習モードで解く