2011-06-24 148 views

回答

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"] 

改进由姆拉登Jablanović建议。

"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"] 
+0

谢谢sawa。但是,它不适合我。我已经使用rails 1.2.1版本与红宝石1.8.6 –

+0

略有不同:'“xxyyydduuummm”.scan(/((。)\ 2 *)/)。group_by {| r,c | r.length} .max.last.map(&:last)' –

+0

对不起! “xxyyydduuummm”.scan(/((。)\ 2 *)/)。group_by {| r,c | r.length} .max.last.map(&:last) TypeError:错误参数类型符号(期望Proc) 这是我的错误..未定义方法'group_by'。我的红宝石版本是1.8.6 –

相关问题