アラサーからのエンジニア転身blog

プログラミングの勉強や転職に関して記事にしていきます。

アナグラム判定メゾット (ある企業の採用面接で出たらしい)

久しぶりの投稿になりました。
勉強を怠っていたわけではありません笑

アナグラム判定メゾットはある企業の採用面接で出た試験らしいです。
自分なりに考えてみました。

(面接官の前で、いきなりホワイトボードに書くのはテンパってできたかな笑)

アナグラム判定メゾット
アナグラムとは??
ある文字列の文字位置を入れ替えることで、違う文字列にするというものです。(hatena → netaha)

判定するために

  • 全く同じ文字列でないこと
  • 同じ文字を同じ文字数分使っていること
# anagram判定アルゴリズム
def anagram(str1,str2)
  array1 = str1.split("")
  array2 = str2.split("")
    array = []
    array1.each do |s1|
      array2.each.with_index do |s2,i|
        if s1 == s2
          array << s1
          array2.delete_at(i)
          next #スキップする
        end
      end
    end
  # 同じ文字を同じ文字数分使っているか?且つ同じ文字列出ないか?
  (array.size == str1.size) && (str1 != str2)
end

ちょっとわかりずらいですね。。。でも一応機能はしています。

ネットで調べたら、こんなに簡単にできるようです。

def anagram(str1, str2)
  (str1.chars.sort == str2.chars.sort) && (str1 != str2)
end

面接ではいきなりこんな問題を出されたりします。
1から10書けることというより、課題設定し、その課題をクリアできる方法を思考できるかを見ているようです。