我有一个关于Ruby的问题:
给定一个输入字符串,我需要返回一个散列,其键是字符串中的单词,其值是每个单词出现的次数。重要提示:我不能使用for循环。
示例:"今天是日出"输出:{今天=>1,is=>1,a=>2,day=>1,sunrise=>1}
你能帮我吗?
试试这样的东西:
def count_words_without_loops(string)
res = Hash.new(0)
string.downcase.scan(/w+/).map{|word| res[word] = string.downcase.scan(/b#{word}b/).size}
return res
end
h = Hash.new(0)
"Today is a day, a sunrise".scan(/w+/) do |w|
h[w] += 1
end
p h # {"Today"=>1, "is"=>1, "a"=>2, "day"=>1, "sunrise"=>1}
如果有for循环约束,请使用递归
只是不要忘记有一个停止的条件。