##はじめに
AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。
問題はこちらから確認してください
##B - String Rotation
まずは入力を受け取ります。また答えとなる変数ansにNo
を代入しておきます。
sとtは一文字ずつを一つの要素とした配列として受け取っています。
s = gets.chomp.chars
t = gets.chomp.chars
ans = "No"
この問題の回転というのがよくわからなかったのですが、一文字ずつずらしていけば、、、っという意味ですね。
つまり、一回の操作は一番最後の文字を先頭に持ってくるということです。
上記の操作をコードにすると下記のようになります。
s.unshift(s[s.length-1])
s.delete_at(s.length-1)
unshiftというメソッドを使用して引数に配列sの末尾の文字を先頭に挿入しています。
このメソッドは引数で指定した要素を削除しているわけではないので、delete_atメソッドで末尾を削除します。
上記のコードを利用してtimesメソッドとif文を作成します。
s = gets.chomp.chars
t = gets.chomp.chars
ans = "No"
s.length.times do
if s == t
ans = "Yes"
break
else
s.unshift(s[s.length-1])
s.delete_at(s.length-1)
end
end
puts ans
配列sの文字数回timesメソッドで繰り返します。
もし配列sとtが同じになればansの中身をYesに上書きします。同じでなかったら一文字ずらして、比較を繰り返します。
s.length分繰り返してもs==tにならなければansは上書きされていないのでNoが出力されます。