我是Ruby新手,試圖找出一個在線測試問題。問題如下:Ruby Anagram比較模塊
字謎是從另一個形成一個字使用的所有原始字母恰好一次重新安排其信件, ;例如,管弦樂團 可以重新安排成車馬。
編寫一個函數,檢查兩個單詞是否是彼此的字謎。
例如,AreAnagrams.are_anagrams?('momdad','dadmom')應爲 返回true,因爲參數是anagrams。
的代碼我想出了是這樣的:
module AreAnagrams
def self.are_anagrams?(string_a, string_b)
## Create @word1 variable to store string_a
@word1 = string_a
## Create @word1_compare variable to store string_a in lower case
@word1_compare = @word1.downcase
## Create @word2_compare variable to store string_b
@word2 = string_b
## Create @word2_compare variable to store string_b in lower case
@word2_compare = @word2.downcase
## Check length of @word1 and @word2 to make sure they are the same length
if @word1.length == @word2.length
=begin
Sort the letters of the @word1 and @word2 variables and compare
them to see if they are anagrams
=end
if @word1_compare.chars.sort.join == @word2_compare.chars.sort.join
puts "#{@word1} and #{@word2} are anagrams!"
else
puts "#{@word1} and #{@word2} are not anagrams!"
end
else
puts "#{@word1} and #{@word2} are not anagrams!"
end
end
end
當我提交的代碼,我得到以下從測試回:
編譯OK,但4出4測試用例失敗
樣本案例:錯誤答案
詞具有獨特的字母:錯誤答案
詞重複的字母:錯誤答案
一個字一個字的前綴:錯誤答案
我已經測試我的代碼以多個字符串,它似乎工作很好。它看起來像是希望我檢查更具體的實例(特殊字符,帶有重複字母的單詞等),但這真的是必需的嗎?對不起,如果這是一個愚蠢的問題,我是Ruby的新手,並失去了。
任何幫助將不勝感激!
既然這是一個類方法,你應該*真的*避免在這裏使用實例變量。這些將持續在方法的調用之間,這可能是你不想要的。只需使用常規的局部變量,不需要「@」。 – tadman
聽起來不錯,我也會改正我的變數。非常感謝,再次感謝你! – Bryan
@tadman回答了您的問題,但您可以採取一些措施來改進您的方法。 1,問題並不要求你「放」,所以你應該刪除它。 2.當你想返回一個結果(例如'true'或'false')並且'puts'結果時,通常最好的方法是'puts'。這使得該方法更通用,如果您想在程序中的其他地方再次使用它,並且沒有或不同的'puts'消息... –