-4

我有一个关于 Ruby 的问题:

给定一个输入字符串,我需要返回一个哈希,其键是字符串中的单词,其值是每个单词出现的次数。重要提示:我不能使用 for 循环。

示例:“今天是一天,日出” 输出:{'Today'=>1, 'is'=>1, 'a'=>2, 'day' =>1, 'sunrise'=>1}

你能帮助我吗?

4

3 回答 3

5
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}
于 2012-03-02T13:50:31.023 回答
5

尝试这样的事情:

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
于 2012-03-02T13:42:00.150 回答
0

如果您有 for 循环约束,请使用递归!
只是不要忘记有一个停止条件。

于 2012-02-26T12:06:44.207 回答