我有一个关于Ruby的问题:伯爵的话没有循环
给定的输入字符串,我需要返回一个哈希,它的键是单词的字符串,其值的时候出现的每个字的数量。重要提示:我不能使用for循环。输出:{'今日'=> 1,'是'=> 1,'a'=> 2,'日'=> 1,'日出' => 1}
你能帮我吗?
我有一个关于Ruby的问题:伯爵的话没有循环
给定的输入字符串,我需要返回一个哈希,它的键是单词的字符串,其值的时候出现的每个字的数量。重要提示:我不能使用for循环。输出:{'今日'=> 1,'是'=> 1,'a'=> 2,'日'=> 1,'日出' => 1}
你能帮我吗?
如果您有for循环约束,请进行递归!
只是不要忘记有停止条件。
map/reduce在这里可能更好,并且可以在多核计算机上做得很好 – 2012-10-01 09:40:35
尝试是这样的:
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}
尼斯:)。如果OP需要它,那么.downcase可能会挤在那里。 – 2012-10-01 09:39:48
听起来像它,否则为什么'for'循环约束? – DNA 2012-02-25 22:20:48