我有一个关于 Ruby 的问题:
给定一个输入字符串,我需要返回一个哈希,其键是字符串中的单词,其值是每个单词出现的次数。重要提示:我不能使用 for 循环。
示例:“今天是一天,日出” 输出:{'Today'=>1, 'is'=>1, 'a'=>2, 'day' =>1, 'sunrise'=>1}
你能帮助我吗?
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}
尝试这样的事情:
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
如果您有 for 循环约束,请使用递归!
只是不要忘记有一个停止条件。