LoginSignup
0
0

More than 1 year has passed since last update.

[Ruby] AtCoder過去問 B - 美しい文字列

Posted at

はじめに

AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

B - 美しい文字列

まずは入力を受け取ります。

w = gets.chomp.chars

一文字ずつ分けて、配列として受け取ります。
入力例1でいえばこのように受け取れているはずです↓
["a", "b", "a", "c", "c", "a", "b", "a"]

countメソッドでそれぞれの文字が配列wの中にいくつあるか調べ、それが偶数個なのかどうかeven?メソッドで調べます。

さらに、全ての種類の文字が偶数個ないといけないので、all?メソッドで上記の条件が全て真の時にtrueを返すようにします。trueであればYesを出力させ、falseならNoを出力させます。

配列wで使われている文字の種類はw.uniqで表現します。

w = gets.chomp.chars

if w.uniq.all?{ |s| w.count(s).even?}
  puts "Yes"
else
  puts "No"
end

これで完成です。

このコードを短くしようと試みました。↓

w = gets.chomp.chars.sort

puts (w.uniq.all?{ |s| w.count(s).even?}) ? "Yes" : "No"

あまりこの書き方をしないのですが、1行でかけました。
わかりやすさ的には初めの方が好きです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0