计数字符在给定字符串中连续重复次数最多

时间:2011-06-24 12:12:47

标签: ruby string

任何人都知道,如何计算字符在给定字符串中连续重复次数最多。我需要非常简短的答案。

例如:“xxyyydduuummm”将返回'y,u,m'

1 个答案:

答案 0 :(得分:6)

"xxyyydduuummm".scan(/((.)\2*)/).group_by{|s, c| s.length}.sort_by(&:first).last.last.map(&:last) (Ruby 1.9)
"xxyyydduuummm".scan(/((.)\2*)/).group_by{|s, c| s.length}.sort_by{|k, v| k}.last.last.map{|s, c| c} (Ruby 1.8.7)
# => ["y", "u", "m"]

改进MladenJablanović建议。

"xxyyydduuummm".scan(/((.)\2*)/).group_by{|s, c| s.length}.max.last.map(&:last) (Ruby 1.9)
"xxyyydduuummm".scan(/((.)\2*)/).group_by{|s, c| s.length}.max.last.map{|s, c| c} (Ruby 1.8.7)
# => ["y", "u", "m"]