How to get words frequency in efficient way with ruby?

前端 未结 7 1671
伪装坚强ぢ
伪装坚强ぢ 2021-02-05 17:50

Sample input:

\"I was 09809 home -- Yes! yes!  You was\"

and output:

{ \'yes\' => 2, \'was\' => 2, \'i\' => 1, \'home\         


        
7条回答
  •  不思量自难忘°
    2021-02-05 18:32

    def count_words(string)
      string.scan(/\w+/).reduce(Hash.new(0)){|res,w| res[w.downcase]+=1;res}
    end
    

    Second variant:

    def count_words(string)
      string.scan(/\w+/).each_with_object(Hash.new(0)){|w,h| h[w.downcase]+=1}
    end
    

提交回复
热议问题