はじめに
AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。
問題はこちらから確認してください↓
B - A to Z String
まずは入力受け取りです。
一文字ずつ分けて配列で受け取っています。
s = gets.chomp.chars
この問題メソッドさえ知っていれば非常に簡単で、要は配列sの中で一番はじめに出てくる(一番先頭に近い)文字Aのインデックス番号(位置)を特定し、配列sの中で一番末尾に近い文字Zのインデックス番号(位置)がわかれば、zのインデックスに+1した数(インデックス番号は0から始まるため+1する)からAのインデックスを引けば文字列の数が分かります。
Aのインデックスはindexメソッドで分かります。
Zのインデックスはrindexというメソッドで末尾からはじめに見つかるZの位置を特定することができます。
s = gets.chomp.chars
a_index = s.index("A")
z_index = s.rindex("Z")
puts z_index+1-a_index
a_indexに+1していない理由は、ここで欲しいのは配列sの先頭からはじめのAにたどり着くまでの文字の数なのでAは含まれないからです。もともとインデックスは0から始まるので−1する必要はありません。
逆にz_indexはZを含めた、最後のZの位置を調べたいので+1しています。