アナグラム判定メゾット (ある企業の採用面接で出たらしい)
久しぶりの投稿になりました。
勉強を怠っていたわけではありません笑
アナグラム判定メゾットはある企業の採用面接で出た試験らしいです。
自分なりに考えてみました。
(面接官の前で、いきなりホワイトボードに書くのはテンパってできたかな笑)
アナグラム判定メゾット
アナグラムとは??
ある文字列の文字位置を入れ替えることで、違う文字列にするというものです。(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書けることというより、課題設定し、その課題をクリアできる方法を思考できるかを見ているようです。