過去問解きまくり研究所 ホーム

平成21年度 春期 午前 問4

基礎理論

部分文字列に関する問題

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

答えと解説を見る

✓ これが正解イn(n+1)/2+1

解説

位置と長さの選び方を数え、空文字列を1つ足します。

部分文字列を数える手筋は、空でないものと空文字列に分けて扱うと見通しがつきます。空でない部分文字列は、切り出す先頭の位置と長さの組で一意に決まります。長さが 1 のものは、先頭を 1 文字目から n 文字目までずらせるので n 通り、長さが 2 のものは、末尾が外へはみ出さない範囲でずらして 1 つ縮んだ n−1 通り、と続き、最後は長さが n の 1 通りで終わります。等差の和として n から 1 までを足し合わせた形になり、その和は n(n+1)/2 という決まった式で書けます。ここに、問題文が仲間に含めている空文字列 1 つ分を足すと、部分文字列の総数の式が導けます。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)