問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
文字列 str を "bwwbwbbwbwbb"
とします。
文字列 str の 3 文字目から 8 文字目までの 'b'
の個数を累積和を用いて求めてください。
文字列 str の i 文字目を str_i
(1 ≦ i ≦ 10) とします。
まず、文字列 str の各要素が 'b'
かどうかを格納する数列 b_0, b_1, ..., b_9
を以下のように考えてみます。
1 ≦ i ≦ 10 において
str_i が'b'
ならば b_(i-1) = 1
str_i が'b'
でないならば b_(i-1) = 0
例えば str = "bwbwwbwbwb"
ならば b = {1, 0, 1, 0, 0, 1, 0, 1, 0, 1}
となります。
ここで、数列 b の 1 の個数は、文字列 str の 'b'
の個数と同じだとわかります。
つまり、数列 b で累積和を用いて、b_2 から b_7 までの総和を求めればよいです。
累積和をとった数列を s とすると、b_2 から b_7 までの総和は、s[8] - s[2]
で求めることができます。
このヒントを元に、累積和で問題を解いてみましょう
・入力はありません。
文字列 str の 3 文字目から 8 文字目までの 'b'
の個数を出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
・入力はありません。